108.go 671 B

1234567891011121314151617181920212223242526272829303132333435
  1. package main
  2. // type TreeNode struct {
  3. // Val int
  4. // Left *TreeNode
  5. // Right *TreeNode
  6. // }
  7. /**
  8. * Definition for a binary tree node.
  9. * type TreeNode struct {
  10. * Val int
  11. * Left *TreeNode
  12. * Right *TreeNode
  13. * }
  14. */
  15. func sortedArrayToBST(nums []int) *TreeNode {
  16. if len(nums) == 0 {
  17. return nil
  18. }
  19. mid := len(nums) / 2
  20. root := TreeNode{nums[mid], nil, nil}
  21. // only one element in nums, return TreeNode{ele, nil, nil}
  22. if mid == 0 {
  23. return &root
  24. }
  25. root.Left = sortedArrayToBST(nums[:mid])
  26. root.Right = sortedArrayToBST(nums[mid+1:])
  27. return &root
  28. }
  29. // func main() {
  30. // t1 := sortedArrayToBST([]int{-10, -3, 0, 5, 9})
  31. // printTree(t1)
  32. // }