java 输入两颗二叉树A,B,判断B是不是A的子结构。

时间:2023-02-23 14:09:47

输入两颗二叉树A,B,判断B是不是A的子结构。

解题思路:

1、找到A中和B的根节点相同的节点,然后进行判断是否相同。

2、如果不同再拿A的左子树与B进行比较。

3、如果仍不同再拿A的右子树与B进行比较。

4、如果仍未找到,则A中不包含B。

判断两个根节点相同的两个树是否包含:

1、先判断B,如果B为空说明包含。

2、再判断A,如果A为空说明不包含。

3、如果A的值与B的值相同然后继续进行此判断。

public class Solution {
public boolean HasSubtree(TreeNode root1,TreeNode root2) {
boolean result=false;
if(root1!=null &&root2!=null){
if(root1.val==root2.val){
result=AhaseB(root1,root2);
}
if(result==false){
result=HasSubtree(root1.left,root2)||HasSubtree(root1.right,root2);
}
}
return result;
}
public boolean AhaseB(TreeNode root1,TreeNode root2){
if(root2==null)
return true;
if(root1==null)
return false;
if(root1.val==root2.val){
return AhaseB(root1.left,root2.left)&& AhaseB(root1.right,root2.right);
}
return false;
}
}