【leetcode】872. 叶子相似的树(js实现)

1. 题目

872. 叶子相似的树
在这里插入图片描述

2. 思路

  1. 通过后序遍历得到两棵二叉树的叶子节点数组;
  2. 再判断两个数组是否相同

3. 代码实现

/**
 * 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}
 */
var leafSimilar = function(root1, root2) {
    
    
    let leaf1 = [], leaf2 = []
    getLeaf(root1, leaf1)
    getLeaf(root2, leaf2)
    console.log(leaf1, leaf2)
    function getLeaf(node, arr) {
    
    
        // 空节点
        if (node === null) return
        // 左右子树
        let left = node.left,
            right = node.right
        getLeaf(left, arr)
        getLeaf(right, arr)
        // 叶子节点
        if (left === null && right === null) {
    
    
            arr.push(node.val)
        }
    }

    if (leaf1.length !== leaf2.length) return false
    return leaf1.toString() === leaf2.toString()
};

4. 参考

代码简洁 一种还不错的解法

JavaScript数组(四):判断数组相等的4种方法

猜你喜欢

转载自blog.csdn.net/weixin_44109827/article/details/129356938
今日推荐