換了新工作,鬆懈了好久,從今天開始繼續刷刷算法題吧
遞歸法
思路:首先是比較葉子節點,葉子節點的特點是沒有左右子節點,所以使用遞歸直到找到沒有左右子節點的時候,即爲葉子節點,將葉子節點的值記錄下來,最後進行比較。
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root1
* @param {TreeNode} root2
* @return {boolean}
*/
function getTree(root, resArr){
if(root.left === null && root.right === null){
resArr.push(root.val);
return resArr;
}else{
if(root.left){
getTree(root.left, resArr);
}
if(root.right){
getTree(root.right, resArr);
}
}
}
var leafSimilar = function(root1, root2) {
if(root1 === null || root2 === null) return true;
let rootArr1 = [], rootArr2 = [];
if(root1){
getTree(root1, rootArr1);
}
if(root2){
getTree(root2, rootArr2);
}
return rootArr1.toString() === rootArr2.toString();
};