

package mainimport "fmt"type TreeNode struct { Val int Left *TreeNode Right *TreeNode } //func rangeSumBST(root *TreeNode, L int, R int) int { stack := make([]*TreeNode,0) var res =0 for root!=nil||len(stack)>0{ for root!=nil{ stack = append(stack,root) root = root.Left } node :=stack[len(stack)-1] stack =stack[:len(stack)-1] if node.Val>=L&&node.Val<=R{ res +=node.Val if node.Val==R{ return res } } root = node.Right } return res}func main() { ten :=&TreeNode{Val:10} five :=&TreeNode{Val:5} ten.Left = five fifteen :=&TreeNode{Val:15} ten.Right = fifteen three :=&TreeNode{Val:3} five.Left = three seven :=&TreeNode{Val:7} five.Right = seven eighteen :=&TreeNode{Val:18} fifteen.Right = eighteen fmt.Println(rangeSumBST(ten,7,15))}