leetcode-day23-叶子相似的树[872]

image.png

换了新工作,松懈了好久,从今天开始继续刷刷算法题吧

递归法
思路:首先是比较叶子节点,叶子节点的特点是没有左右子节点,所以使用递归直到找到没有左右子节点的时候,即为叶子节点,将叶子节点的值记录下来,最后进行比较。

/**
 * 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();
};

你可能感兴趣的:(leetcode-day23-叶子相似的树[872])