* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean checkSubTree(TreeNode t1, TreeNode t2) {
if (t2 == null) {
return true;
}
if (t1 == null) {
return false;
}
if (dfs(t1, t2)) {
return true;
}
return checkSubTree(t1.left, t2) || checkSubTree(t1.right, t2);
}
private boolean dfs(TreeNode t1, TreeNode t2) {
if (t2 == null) {
return t1 == null;
}
if (t1 == null || t1.val != t2.val) {
return false;
}
return dfs(t1.left, t2.left) && dfs(t1.right, t2.right);
}
}