網易將收購《底特律攻略》開發商全部股份|壞掉的PS5可能用作挖礦|
阿新 • • 發佈:2022-03-31
思路:
樹用遞迴就對了。
相同的樹定義是結點值相同,樹的結構也相同。
有這麼幾種情況:
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 };