图片.png

    图片.png

    1. package main
    2. import "fmt"
    3. type TreeNode struct {
    4. Val int
    5. Left *TreeNode
    6. Right *TreeNode
    7. }
    8. //
    9. func rangeSumBST(root *TreeNode, L int, R int) int {
    10. stack := make([]*TreeNode,0)
    11. var res =0
    12. for root!=nil||len(stack)>0{
    13. for root!=nil{
    14. stack = append(stack,root)
    15. root = root.Left
    16. }
    17. node :=stack[len(stack)-1]
    18. stack =stack[:len(stack)-1]
    19. if node.Val>=L&&node.Val<=R{
    20. res +=node.Val
    21. if node.Val==R{
    22. return res
    23. }
    24. }
    25. root = node.Right
    26. }
    27. return res
    28. }
    29. func main() {
    30. ten :=&TreeNode{Val:10}
    31. five :=&TreeNode{Val:5}
    32. ten.Left = five
    33. fifteen :=&TreeNode{Val:15}
    34. ten.Right = fifteen
    35. three :=&TreeNode{Val:3}
    36. five.Left = three
    37. seven :=&TreeNode{Val:7}
    38. five.Right = seven
    39. eighteen :=&TreeNode{Val:18}
    40. fifteen.Right = eighteen
    41. fmt.Println(rangeSumBST(ten,7,15))
    42. }