题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
源代码:
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
boolean res=false;
if(root1!=null&&root2!=null){
res= tree1Hastree2(root1,root2);//先看两个树的根节点是否匹配
if(res==false){////如果两个树的根节点不匹配,再看第二个树是否和左子树匹配
res = HasSubtree(root1.left,root2);
}
if(res==false){
res = HasSubtree(root1.right,root2);//如果第二个树和左子树不匹配,则比较第二个树是否和右子树匹配
}
}
return res;
}
public boolean tree1Hastree2(TreeNode root1,TreeNode root2) {
if(root2==null){//如果树2为空,则肯定匹配
return true;
}
if(root1==null&&root2!=null){//如果树1为空,树2不为空,则不匹配
return false;
}
if(root1.val!= root2.val){
return false;
}
return tree1Hastree2(root1.left,root2.left)&&tree1Hastree2(root1.right,root2.right);//如果两棵树的根节点匹配,则再接着比较两棵树的左子树、两棵树的右子树分别是否匹配
}
}
判断二叉树子结构
本文介绍了一种算法,用于判断一棵二叉树B是否为另一棵二叉树A的子结构。通过递归方法,首先检查两树根节点是否匹配,然后分别比较左子树和右子树。

被折叠的 条评论
为什么被折叠?



