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上看了一下,代码简洁性还需加强