题目:
Given two binary trees, write a function to check if they are the same or not.
Two binary trees are considered the same if they are structurally identical and the nodes have the same value.
解答:
解法一:非递归
首先想到的是采用非递归的方法,使用队列的方式
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
Queue<TreeNode> queue=new LinkedList<>();
queue.add(p);
queue.add(q);
while(!queue.isEmpty()){
TreeNode l=queue.poll();
TreeNode r=queue.poll();
if(l==null && r==null){
continue;
}
if(l==null || r==null || l.val!=r.val){
return false;
}
queue.add(l.left);
queue.add(r.left);
queue.add(l.right);
queue.add(r.right);
}
return true;
}
}
解法二:递归
理解树的递归,先判断几种特殊情况,然后再判断递归的时候是否相等
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null){
return true;
}else if((p==null&&q!=null)||(p!=null&&q==null)){
return false;
}else if(p.val!=q.val){
return false;
}else{
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
}