首页 > 其他 > 详细

938 range sum of BST

时间:2021-04-17 11:03:57      阅读:16      评论:0      收藏:0      [点我收藏+]

1. 题目描述

在符合给定范围内的二叉搜索树的节点的值进行累加。

本质上也是二叉树的遍历。

2. 题解

全局变量的递归解法

class Solution {
public:
    int sum = 0;
    int preorder(TreeNode*root,int low,int high){
        if (root) {
            if (root->val >= low and root->val <= high) {
                sum+=root->val;
            }
            if (root->val >= low) {
                preorder(root->left, low, high);
            }
            if (root->val <= high) {
                preorder(root->right, low, high);
            }
        }
        return sum;
    }
    int rangeSumBST(TreeNode* root, int low, int high) {
        if (!root) {
            return 0;
        }
        return preorder(root, low, high);
    }
};

真正意义上的递归

class Solution {
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        if (!root)
            return 0;
        else if (root->val < low)
            return rangeSumBST(root->right, low, high);
        else if (root->val > high)
            return rangeSumBST(root->left, low, high);
        // roo->val belong to [low,high]
        return root->val + rangeSumBST(root->left, low, high) + rangeSumBST(root->right, low, high);
    }
};

3. 视频讲解

4. 总结

注意递归的基准情况

938 range sum of BST

原文:https://www.cnblogs.com/MartinTai/p/14669359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!