Leetcode 100. Same Tree
题目链接: Same Tree
难度:Easy
题目大意:
判断两棵二叉树是否完全一样。
思路:
思路1(递归) :
递归,先判断两棵树的根节点是否一样,然后对左子树和右子树进行相同操作。
思路2(迭代):
参考高赞回答 ,对二叉树进行先序遍历,判断各个节点是否相同。
代码
思路1代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null||q==null){
return p==q;
}
return p.val==q.val&&isSameTree(p.left,q.left)&&isSameTree(p.right,q.right);
}
}
思路2代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {
if(p==null||q==null){
return p==q;
}
Queue<TreeNode> queue=new LinkedList<>();
queue.offer(p);
queue.offer(q);
while(!queue.isEmpty()){
TreeNode node_p=queue.poll();
TreeNode node_q=queue.poll();
if(node_p==null&&node_q==null){
continue;
}
if(node_p==null||node_q==null||node_p.val!=node_q.val){
return false;
}
queue.offer(node_p.left);
queue.offer(node_q.left);
queue.offer(node_p.right);
queue.offer(node_q.right);
}
return true;
}
}