题解 | #树的子结构#双重递归
树的子结构
http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
if (root1 == null || root2 == null){
return false;
}
return preTrace(root1,root2) || HasSubtree(root1.left,root2) || HasSubtree(root1.right,root2);
}
private boolean preTrace(TreeNode root1,TreeNode root2){
if (root2 == null){
return true;
}
if (root1 == null){
return false;
}
if (root1.val != root2.val){
return false;
}
if (root2.left == null && root2.right == null){
return true;
}
return preTrace(root1.left,root2.left) && preTrace(root1.right,root2.right);
}