100.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. // TreeNode ...
  6. // type TreeNode struct {
  7. // Val int
  8. // Left *TreeNode
  9. // Right *TreeNode
  10. // }
  11. /**
  12. * Definition for a binary tree node.
  13. * type TreeNode struct {
  14. * Val int
  15. * Left *TreeNode
  16. * Right *TreeNode
  17. * }
  18. */
  19. func isSameTree(p *TreeNode, q *TreeNode) bool {
  20. // leaf node, eq
  21. if p == nil && q == nil {
  22. return true
  23. }
  24. // one of p/q is nil, ne
  25. if p == nil || q == nil {
  26. return false
  27. }
  28. if p.Val != q.Val {
  29. return false
  30. }
  31. // preoder traversal, DLR
  32. return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)
  33. }
  34. func test100() {
  35. /**
  36. * t1: 5
  37. * / \
  38. * 1 4
  39. * / \
  40. * 2 3
  41. */
  42. t1l := TreeNode{1, nil, nil}
  43. t1rl := TreeNode{2, nil, nil}
  44. t1rr := TreeNode{3, nil, nil}
  45. t1r := TreeNode{4, &t1rl, &t1rr}
  46. t1 := &TreeNode{5, &t1l, &t1r}
  47. /**
  48. * t2: same as t1
  49. */
  50. t2l := TreeNode{1, nil, nil}
  51. t2rl := TreeNode{2, nil, nil}
  52. t2rr := TreeNode{3, nil, nil}
  53. t2r := TreeNode{4, &t2rl, &t2rr}
  54. t2 := &TreeNode{5, &t2l, &t2r}
  55. fmt.Println(isSameTree(t1, t2))
  56. }