100. 相同的树

思路:

树用递归就对了。

相同的树定义是结点值相同,树的结构也相同。

有这么几种情况:

1. 结点都为null, 代表都是空结点,没问题。

2. 结点一个是null,一个不是null, 这种情况树的结构肯定是不同的。

3. 结点都为非空结点,这就要求结点值相同,然后递归的去比较左子树和右子树了。

 

代码:(这个代码看上去比较难懂,其实想一下就明白了,这个是idea优化过后的代码)

1 var isSameTree = function(p, q) {
2         if(p && q){
3             return p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
4         }else return !(p || q);
5     };

其实我想写的是下面这个,这个比较人类友好:

1 var isSameTree = function(p, q) {
2         if(p && q){
3             return p.val === q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);
4         }else if(p || q){
5             return false;
6         }else{
7             return true;
8         }
9     };

 

posted @ 2022-04-08 13:46  BJFU-VTH  阅读(37)  评论(0编辑  收藏  举报