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     }

 

 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2019-09-24 10:16  dodoBehind  阅读(124)  评论(0编辑  收藏  举报