给你两棵二叉树的根节点 p
和 q
,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
思路:前序遍历,利用递归比较每个节点是否相等。
public static boolean isSameTree(TreeNode p, TreeNode q){
return compare(p,q);
}
public static boolean compare(TreeNode p,TreeNode q){
//先判断为空的情况
if(p==null && q!=null){
return false;
}else if(p!=null && q==null){
return false;
}else if(p==null && q==null){
return true;
}else if(p.val!=q.val){ //不为空的情况
return false;
}
boolean l=compare(p.left,q.left);
boolean r=compare(p.right,q.right);
return l&&r;
}