traversal.go 832 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package main
  2. import "fmt"
  3. type node struct {
  4. val int
  5. left *node
  6. right *node
  7. }
  8. func main() {
  9. n8 := node{8, nil, nil}
  10. n7 := node{7, nil, nil}
  11. n6 := node{6, &n7, &n8}
  12. n5 := node{5, nil, nil}
  13. n4 := node{4, nil, &n6}
  14. n3 := node{3, nil, &n5}
  15. n2 := node{2, &n4, nil}
  16. n1 := node{1, &n2, &n3}
  17. fmt.Println("preorder: ")
  18. preorder(&n1)
  19. fmt.Println("\ninorder: ")
  20. inorder(&n1)
  21. fmt.Println("\npostorder: ")
  22. postorder(&n1)
  23. }
  24. func preorder(root *node) {
  25. if root == nil {
  26. return
  27. }
  28. fmt.Printf("%d ", root.val)
  29. preorder(root.left)
  30. preorder(root.right)
  31. }
  32. func inorder(root *node) {
  33. if root == nil {
  34. return
  35. }
  36. inorder(root.left)
  37. fmt.Printf("%d ", root.val)
  38. inorder(root.right)
  39. }
  40. func postorder(root *node) {
  41. if root == nil {
  42. return
  43. }
  44. postorder(root.left)
  45. postorder(root.right)
  46. fmt.Printf("%d ", root.val)
  47. }