Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree of s. A subtree of s is a tree consists of a node in s and all of this node's descendants. The tree s could also be considered as a subtree of itself.
Example 1:
Given tree s:
3 / 4 5 / 1 2Given tree t:
4 / 1 2Return true, because t has the same structure and node values with a subtree of s.
Example 2:
Given tree s:
3 / 4 5 / 1 2 / 0Given tree t:
4 / 1 2Return false.
思路:
1 写一个判断树是否相同的函数
2 递归的判断当前树节点是否相同。
1 class Solution { 2 public boolean isSubtree(TreeNode s, TreeNode t) { 3 if(s == null) return false; 4 if(isSame(s,t)) return true; 5 return isSubtree(s.left,t) || isSubtree(s.right,t); 6 } 7 public boolean isSame(TreeNode s, TreeNode t) { 8 if(s == null && t == null) return true; 9 if(s == null || t == null) return false; 10 11 if(s.val != t.val) return false; 12 13 return isSame(s.left,t.left) && isSame(s.right,t.right); 14 15 } 16 }