题目
题解
DFS
直接用递归,很简单
class Solution {
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;
else
return isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
时间复杂度: O ( m i n ( m , n ) ) O(min(m,n)) O(min(m,n))
空间复杂度: O ( m i n ( m , n ) ) O(min(m,n)) O(min(m,n))
BFS
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null&&q==null)
return true;
if(p==null||q==null)
return false;
Queue<TreeNode> queue1 = new LinkedList<TreeNode>();
Queue<TreeNode> queue2 = new LinkedList<TreeNode>();
queue1.offer(p);
queue2.offer(q);
while(!queue1.isEmpty()&&!queue2.isEmpty()){
TreeNode h1=queue1.poll();
TreeNode h2=queue2.poll();
if(h1==null&&h2==null)
continue;
if((h1==null||h2==null)||h1.val!=h2.val)
return false;
queue1.offer(h1.left);
queue2.offer(h2.left);
queue1.offer(h1.right);
queue2.offer(h2.right);
}
return queue1.isEmpty()&&queue2.isEmpty();
}
}
时间复杂度: O ( m i n ( m , n ) ) O(min(m,n)) O(min(m,n))
空间复杂度: O ( m i n ( m , n ) ) O(min(m,n)) O(min(m,n))
p.s 今天事情比较多,先水个简单题凑数吧…