Leetcode----Same Tree

本文提供两种方法来检查两棵二叉树是否等价,包括非递归和递归方式,并确保它们不仅结构相同,节点值也相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given two binary trees, write a function to check if they are equal or not.


Two binary trees are considered equal if they are structurally identical and the nodes have the same value.



非递归:


public static boolean isSameTree(TreeNode p,TreeNode q){


Queue<TreeNode> queueP = new LinkedList<TreeNode>();
Queue<TreeNode> queueQ = new LinkedList<TreeNode>();
if(p==null && q==null)
return true;
else if (p==null || q==null)
return false;
queueP.add(p);
queueQ.add(q);
int j=0,eachNum=1;
while((!queueP.isEmpty()) && (!queueQ.isEmpty())){
j=0;
for(int i=1;i<=eachNum;i++){
TreeNode topP = queueP.poll();
TreeNode topQ = queueQ.poll();
if(topP.val != topQ.val){
return false;
}
else{
if(topP.left != null && topQ.left != null)
{
queueP.add(topP.left);
queueQ.add(topQ.left);
j++;
}
if(topP.right != null && topQ.right != null)
{
queueP.add(topP.right);
queueQ.add(topQ.right);
j++;
}
if((topP.left == null && topQ.left !=null) || (topQ.left == null && topP.left !=null) ||(topQ.right == null && topP.right !=null) ||(topP.right== null && topQ.right !=null)){
return false;
}
}
}
eachNum = j;
}
if(!queueP.isEmpty() || !queueQ.isEmpty())
return false;
else 
return true;


}


递归:



public static boolean isSameTree2(TreeNode p,TreeNode q){
if(p==null && q==null)
return true;
else if (p==null || q==null)
return false;
if(p.val != q.val)
return false;
else{
if(isSameTree2(p.left,q.left) && isSameTree2(q.right,p.right))
return true;
else
return false;
}
}



完事去discuss上看了一下,代码简洁性还需加强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值