美文网首页
Leetcode 938 二叉搜索树的范围和

Leetcode 938 二叉搜索树的范围和

作者: 禾木清清 | 来源:发表于2019-07-14 08:21 被阅读0次

    题目

    给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。

    二叉搜索树保证具有唯一的值。

    示例 1:

    输入:root = [10,5,15,3,7,null,18], L = 7, R = 15
    输出:32
    示例 2:

    输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
    输出:23

    提示:

    树中的结点数量最多为 10000 个。
    最终的答案保证小于 2^31

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/range-sum-of-bst
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    本题是要计算树中给定范围内的所有节点的和。

    • 将root的值和范围进行比较,如果在范围内就相加根的值,然后对左右子树进行相加
    • 递归的将左右和root分别比较,< L只保留右子树,否则左子树
    • 返回值

    代码 284ms

    # Definition for a binary tree node.
    # class TreeNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution(object):
        def rangeSumBST(self, root, L, R):
            """
            :type root: TreeNode
            :type L: int
            :type R: int
            :rtype: int
            """
            total = 0 
            
            if not root:
                return total 
            
            if root.val < L:
                total += self.rangeSumBST(root.right, L, R)
            elif root.val > R:
                total += self.rangeSumBST(root.left, L, R)
            else:
                total += root.val
                total += self.rangeSumBST(root.left, L, R)
                total += self.rangeSumBST(root.right, L, R)
            
            return total
            
    

    相关文章

      网友评论

          本文标题:Leetcode 938 二叉搜索树的范围和

          本文链接:https://www.haomeiwen.com/subject/hpovkctx.html