网络异常,图片无法展示
|
题目地址(938. 二叉搜索树的范围和)
题目描述
给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。 示例 1: 输入:root = [10,5,15,3,7,null,18], low = 7, high = 15 输出:32 示例 2: 输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10 输出:23 提示: 树中节点数目在范围 [1, 2 * 104] 内 1 <= Node.val <= 105 1 <= low <= high <= 105 所有 Node.val 互不相同
思路
DFS遍历
代码
- 语言支持:Python3
Python3 Code:
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def rangeSumBST(self, root: TreeNode, low: int, high: int) -> int: self.res = 0#设置公共变量 def dfs(node:TreeNode): if low <= node.val <= high: # print(node.val) self.res += node.val if node.left: dfs(node.left) if node.right: dfs(node.right) dfs(root) return self.res
复杂度分析
令 n 为数组长度。
- 时间复杂度:O(n)O(n)
- 空间复杂度:O(1)O(1)