938.二叉搜索树的范围和
题目
给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。
二叉搜索树保证具有唯一的值。1
2
3
4
5
6
7
8示例 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
方法
方法1:递归中序遍历
1 | # Definition for a binary tree node. |
方法2:递归深度优先遍历(先序遍历)
采用深度搜先方法遍历二叉树,如果$node.val$在[L,R]范围之外(比如$node.val1
2
3
4
5
6
7
8
9
10
11
12
13
14class Solution(object):
def rangeSumBST(self, root, L, R):
def dfs(node):
if node:
if L <= node.val <= R:
self.ans += node.val
if L < node.val:
dfs(node.left)
if node.val < R:
dfs(node.right)
self.ans = 0
dfs(root)
return self.ans
方法3:非递归的深度优先遍历
1 | # Definition for a binary tree node. |