public boolean HasSubtree(TreeNode root1, TreeNode root2) {
if(root1==null || root2==null){ //注意:这里约定空树不是任意一个树的子结构
return false;
}
return HasSubtree(root1.left,root2) ||
isSubtree(root1,root2) ||
HasSubtree(root1.right,root2);
}
//判断以 root2 为根节点的树是否是以 root1 为根节点的子树。
//比如:
// 2
// /
// 4
// 是
// 2
// / \
// 4 5
// 的子树
private boolean isSubtree(TreeNode root1,TreeNode root2){
if(root2==null){ // root2 为空树是 root1 的子树
return true;
}
if(root1==null){ //显然空树没有子树
return false;
}
if(root1.val!=root2.val){
return false;
}
return isSubtree(root1.left,root2.left) &&
isSubtree(root1.right,root2.right);
}
www.mianshi.online,[www.i9code.cn](
本文由博客一文多发平台 OpenWrite 发布!