换了新工作,松懈了好久,从今天开始继续刷刷算法题吧
递归法
思路:首先是比较叶子节点,叶子节点的特点是没有左右子节点,所以使用递归直到找到没有左右子节点的时候,即为叶子节点,将叶子节点的值记录下来,最后进行比较。
/**
* 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();
};