码迷,mamicode.com
首页 > 其他好文 > 详细

2019/12/6

时间:2019-12-07 01:32:49      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:root   style   lse   else   解法   amp   返回   val   否则   

Leetcode_938

题目描述:BST中查找在区间 [ L,R ] 中的元素和

我的解法:前序遍历,逐个检查,计算求和,递归实现。

部分代码:

void PreOrder(TreeNode* root,int L,int R,int &sum){
    if (root == NULL)
        return;
    PreOrder(root->left,L,R,sum);
    if (root->val >= L && root->val <= R)
        sum+=root->val;
    PreOrder(root->right,L,R,sum);
 }

题后反思:对于BST,没必要逐个检查,sub_root->val < L, 那么PreOrder(sub_root->right, L, R); 如果sub_root->val > R, 那么PreOrder(sub_root->left, L, R);

     否则,返回sub_root->val + PreOrder(sub_root->left, L, R) + PreOrder(sub_root->right , L, R);

完善代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    int rangeSumBST(TreeNode* root, int L, int R) {
        if (root == NULL)
            return 0;
        if (root->val < L)
            return rangeSumBST(root->right,L,R);
        else if (root->val > R)
            return rangeSumBST(root->left,L,R);
        else
            return root->val+rangeSumBST(root->left,L,R)+rangeSumBST(root->right,L,R);
    }
};

今天是刷题第一天呢  *-*

2019/12/6

标签:root   style   lse   else   解法   amp   返回   val   否则   

原文地址:https://www.cnblogs.com/Jovesun/p/12000154.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!