938-二叉排序树的范围和
给定二叉搜索树的根结点 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/range-sum-of-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解:
因为是二叉排序树,所有给出两个节点之间的和就是求结点值的范围和,利用二叉树的遍历算法实现
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def rangeSumBST(self, root, L, R):
if root == None:
return 0
lsum = self.rangeSumBST(root.left,L,R)
rsum = self.rangeSumBST(root.right,L,R)
if (root.val>=L) and (root.val<=R):
return root.val + lsum + rsum
else:
return lsum+rsum
总结:
我犯的错在于递归调用时没有加上self.导致编译失败,还有就是没有加上else: return lsum+rsum这句导致结果不对。