572.subtree-of-another-tree.go 594 B

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * Definition for a binary tree node.
  3. * type TreeNode struct {
  4. * Val int
  5. * Left *TreeNode
  6. * Right *TreeNode
  7. * }
  8. */
  9. func isSubtree(s *TreeNode, t *TreeNode) bool {
  10. return postorder(s, t)
  11. }
  12. func postorder(s *TreeNode, t *TreeNode) bool {
  13. if s == nil {
  14. return s == t
  15. }
  16. if postorder(s.Left, t) || postorder(s.Right, t) {
  17. return true
  18. }
  19. return isSametree(s, t)
  20. }
  21. func isSametree(s *TreeNode, t *TreeNode) bool {
  22. if s == nil || t == nil {
  23. return s == t
  24. }
  25. if s.Val != t.Val {
  26. return false
  27. }
  28. return isSametree(s.Left, t.Left) && isSametree(s.Right, t.Right)
  29. }