/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func isSubtree(s *TreeNode, t *TreeNode) bool { return postorder(s, t) } func postorder(s *TreeNode, t *TreeNode) bool { if s == nil { return s == t } if postorder(s.Left, t) || postorder(s.Right, t) { return true } return isSametree(s, t) } func isSametree(s *TreeNode, t *TreeNode) bool { if s == nil || t == nil { return s == t } if s.Val != t.Val { return false } return isSametree(s.Left, t.Left) && isSametree(s.Right, t.Right) }