114.go 694 B

12345678910111213141516171819202122232425262728293031323334
  1. package main
  2. /**
  3. * Definition for a binary tree node.
  4. * type TreeNode struct {
  5. * Val int
  6. * Left *TreeNode
  7. * Right *TreeNode
  8. * }
  9. */
  10. func flatten(root *TreeNode) { // Inorder flatten
  11. prev := (*TreeNode)(nil)
  12. flattenHelper(root, &prev)
  13. }
  14. // Reverse order of the inorder traversal
  15. // root -> left -> right => right -> left -> root
  16. func flattenHelper(root *TreeNode, prev **TreeNode) {
  17. if root == nil {
  18. return
  19. }
  20. flattenHelper(root.Right, prev)
  21. flattenHelper(root.Left, prev)
  22. root.Left = nil
  23. root.Right = *prev
  24. *prev = root
  25. }
  26. // func main() {
  27. // root1 := sortedArrayToBST([]int{3, 2, 4, 1, 6, 5, 7})
  28. // printTree(root1)
  29. // flatten(root1)
  30. // printTree(root1)
  31. // }