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 };