题目
给定两颗二叉树,校验二颗二叉树是否一致。当二叉树的结构和每个节点的值都为一样时判定为一致。
题解:很简单的一道题,递归调用即可
在递归时需要做两个逻辑判断
第一:判断结构
①:当 两颗树 都为null 因为都是null,也没有子树了,说明结构一样
②:当 两棵树 一个为null一个不为null,说明结构不一样
第二:判断值
①:如果当前两颗树的值不相等,则明显,两棵树不相等
②:递归调用两棵树的右子树是否相等,如果相等在递归调用两棵树的左子树是否相等
附上代码:
public boolean isSameTree(TreeNode p, TreeNode q) {
// 判断结构
if(p == null && q == null){
return true;
}
if(p == null || q == null){
return false;
}
// 判断值
if(p.val != q.val){
return false;
}
// 判断右子树 与 左子树
boolean sameTree = isSameTree(p.right, q.right);
if(sameTree){
return isSameTree(p.left,q.left);
}
return false;
}