leetcode 572. 另一个树的子树 【时间击败88.10%】 【内存击败96.40%】
1 boolean ans = false; 2 3 public boolean isSubtree(TreeNode s, TreeNode t) { 4 if (t == null) return true; 5 if (s == null) return false; 6 dfs(s, t); 7 return ans; 8 } 9 10 void dfs(TreeNode s, TreeNode t) { 11 if (s.val == t.val) { 12 if (check(s, t)) { 13 ans = true; 14 return; 15 } 16 } 17 if (s.left != null) dfs(s.left, t); 18 if (s.right != null) dfs(s.right, t); 19 } 20 21 boolean check(TreeNode s, TreeNode t) { 22 if (s == null && t == null) return true; 23 if (s == null || t == null) return false; 24 if (s.val == t.val) { 25 return check(s.left, t.left) && check(s.right, t.right); 26 } 27 return false; 28 }