LeetCode-Same Tree

最开始想到的就是使用递归的方式遍历比较二叉树中的每一个节点,只要某个节点不一样,就返回 false。但是要注意需要处理很多 case。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSameTree(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;
if((p.left!=null && q.left==null) || (p.left==null && q.left!=null))
return false;
if((p.right!=null && q.right==null) || (p.right==null && q.right!=null))
return false;
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}

但是。。真的要处理这么多情况么?!当然没必要。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public boolean isSameTree(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;
return isSameTree(p.left,q.left) && isSameTree(p.right,q.right);
}
}