100.go 1023 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. // one of p/q is not nil, ne
  22. if p == nil || q == nil {
  23. return p == q
  24. }
  25. if p.Val != q.Val {
  26. return false
  27. }
  28. // preoder traversal, DLR
  29. return isSameTree(p.Left, q.Left) && isSameTree(p.Right, q.Right)
  30. }
  31. func test100() {
  32. /**
  33. * t1: 5
  34. * / \
  35. * 1 4
  36. * / \
  37. * 2 3
  38. */
  39. t1l := TreeNode{1, nil, nil}
  40. t1rl := TreeNode{2, nil, nil}
  41. t1rr := TreeNode{3, nil, nil}
  42. t1r := TreeNode{4, &t1rl, &t1rr}
  43. t1 := &TreeNode{5, &t1l, &t1r}
  44. /**
  45. * t2: same as t1
  46. */
  47. t2l := TreeNode{1, nil, nil}
  48. t2rl := TreeNode{2, nil, nil}
  49. t2rr := TreeNode{3, nil, nil}
  50. t2r := TreeNode{4, &t2rl, &t2rr}
  51. t2 := &TreeNode{5, &t2l, &t2r}
  52. fmt.Println(isSameTree(t1, t2))
  53. }