938.二叉搜索树的范围和

152 阅读1分钟

题目:
给定二叉搜索树的根结点 root,返回值位于范围  [low, high]  之间的所有结点的值的和。
算法:

func rangeSumBST(root *TreeNode, low int, high int) int {
	ans := 0
	var dfs func(node *TreeNode) 
	dfs =  func(node *TreeNode) {
		if node == nil {
			return
		}
		if node.Val < low {
			dfs(node.Right)
		} else if node.Val > high {
			dfs(node.Left)
		} else {
			ans = ans + node.Val
			dfs(node.Left)
			dfs(node.Right)
		}
	}
	dfs(root)
	return ans
}