最开始想到的就是使用递归的方式遍历比较二叉树中的每一个节点,只要某个节点不一样,就返回 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
|
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
|
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); } }
|