652. 寻找重复的子树 - 力扣(LeetCode)

652. 寻找重复的子树 - 力扣(LeetCode)

js 复制代码
/**
 * 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} root
 * @return {TreeNode[]}
 */
var findDuplicateSubtrees = function(root) {
    const seen = new Map();
    const repeat = new Set();
    const dfs = (node) => {
        if (!node) {
            return "";
        }
        let sb = '';
        sb += node.val;
        sb += "(";
        sb += dfs(node.left);
        sb += ")(";
        sb += dfs(node.right);
        sb += ")";
        if (seen.has(sb)) {
            repeat.add(seen.get(sb));
        } else {
            seen.set(sb, node);
        }
        return sb;
    }
    dfs(root);
    return [...repeat];
};

执行结果:通过

执行用时:108 ms, 在所有 JavaScript 提交中击败了67.16%的用户

内存消耗:48.7 MB, 在所有 JavaScript 提交中击败了43.14%的用户

通过测试用例:176 / 176

js 复制代码
var findDuplicateSubtrees = function(root) {
    const seen = new Map();
    const repeat = new Set();
    let idx = 0;
    const dfs = (node) => {
        if (!node) {
            return 0;
        }
        const tri = [node.val, dfs(node.left), dfs(node.right)];
        const hash = tri.toString();
        if (seen.has(hash)) {
            const pair = seen.get(hash);
            repeat.add(pair[0]);
            return pair[1];
        } else {
            seen.set(hash, [node, ++idx]);
            return idx;
        }
    }
    dfs(root);
    return [...repeat];
};

执行结果:通过

执行用时:80 ms, 在所有 JavaScript 提交中击败了98.28%的用户

内存消耗:48.3 MB, 在所有 JavaScript 提交中击败了70.10%的用户

通过测试用例:176 / 176

参考链接

652. 寻找重复的子树 - 力扣(LeetCode)

寻找重复的子树 - 寻找重复的子树 - 力扣(LeetCode)

[Python/Java/TypeScript/Go DFS节点编号 - 寻找重复的子树 - 力扣(LeetCode)](https://leetcode.cn/problems/find-duplicate-subtrees/solution/pythonjavatypescriptgo-dfsshu-bian-ma-by-gna9/)

相关推荐
Doubbbbbbble云3 小时前
基于贪心算法的区间覆盖问题求解策略4
算法·贪心算法
不会就选b9 小时前
算法日常・每日刷题--<贪心>25
数据结构·算法
西部驯兽师11 小时前
制造企业的信息化选型课题(一)
职场和发展
Cccp.12312 小时前
【leetcode】(七)前缀树和贪心算法
数据结构·leetcode·贪心算法
天真小巫12 小时前
2026.9.28总结
职场和发展
千里码aicood12 小时前
基于CART算法的图书分类系统设计与实现
数据库·算法·分类
我命由我1234512 小时前
经纪人的职业定义
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
做cv的小昊13 小时前
【World Model】π0.5:a Vision-Language-Action Model with Open-World Generalization
人工智能·算法·机器学习·大模型·多模态·vla·世界模型
لا معنى له13 小时前
World-In-World: World Models in a Closed-Loop World
算法