输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
使用递归,将A,B进行判断是否相等,如果不等,就判断A的左右子树是否与B相等,直到为空,判断A与B是否相等是指从A、B的根节点开始遍历数,遍历完的值一直相等直到B为空
public boolean isSubStructure(TreeNode A, TreeNode B) {
if(A==null||B==null)return false;
return judge(A,B)||isSubStructure(A.left,B)||isSubStructure(A.right,B);
}
private boolean judge(TreeNode A, TreeNode B){
if(A==null||B==null){
return B==null;
}
return (A.val==B.val)&&judge(A.left,B.left)&&judge(A.right,B.right);
}
原文:https://www.cnblogs.com/keke-coding/p/13565109.html