数据结构与算法之LeetCode-652. 寻找重复的子树 - 力扣(1024程序员节)
652. 寻找重复的子树 - 力扣(LeetCode)
/*** 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
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)
数据结构与算法之LeetCode-652. 寻找重复的子树 - 力扣(1024程序员节)相关推荐
- LeetCode 652. 寻找重复的子树(DFS)
1. 题目 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1:1/ \2 3/ / \4 ...
- 9.9 力扣652. 寻找重复的子树
652. 寻找重复的子树 - 力扣(LeetCode) 给定一棵二叉树 root,返回所有重复的子树. 对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 如果两棵树具有相同的结构和相同的结 ...
- 652. 寻找重复的子树
给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1: 1 / \ ...
- 数据结构与算法之链表结构寻找p、q最近的公共祖先
链表结构,寻找p.q最近的公共祖先 数据结构与算法之链表结构寻找p.q最近的公共祖先 链表结构,寻找p.q最近的公共祖先 问题 想法 代码 问题 设一棵二叉树的结点结构为(LLINK, INFO, R ...
- Python 数据结构与算法——从二分图到寻找最大排列(Maximum Permutation)
假设现在有 8 位有着特殊癖好的人去买票看电影,其中有一部分人得到了自己喜欢的座位,但大多数人并不满意.现在的问题是,如果这些人各自都有自己喜欢的座位(喜欢的座位有重叠,这是进行最大排列的前提,否则无 ...
- 算法---------寻找重复的子树(Java版本)
题目描述: 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可.两棵树重复是指它们具有相同的结构以及相同的结点值.示例 1:1/ \2 3/ / \4 2 ...
- LeetCode-652. 寻找重复的子树
题目描述: 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1: 1/ \2 3/ / \4 ...
- 通俗易懂:贪心算法(二):区间问题 (力扣435无重叠区间)
看完本文,可以顺便解决leetcode以下题目: 435.无重叠区间(中等) 一.通俗易懂的 贪心算法 |思想 (重复一次~~~) 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的,从而使得 ...
- 【数据结构与算法】LeetCode面试真题,带你领略算法思想
最新文章
- 试图将驱动程序添加到存储区_Ubuntu 19.10IOS将捆绑NVIDIA驱动
- 让你的网站在IE8的兼容模式下运行
- 1015 德才论 (25 分)(c语言)
- 超好的Git学习网站
- php无法创建cookie,php-curl cookie无法成功创建
- Java并发编程系列
- Oracle 中伪数列ROWID
- 客户端渲染(CSR)
- 安卓pdf 控件使用说明
- 一文告诉你什么是领域驱动设计?
- java歌词解析器_Java LRC 歌词解析
- png 微软ppt 透明度_完美PNG半透明窗体解决方案
- jdk12switch表达式
- 计算机毕业设计 java餐厅点餐系统 餐厅管理系统 餐厅点餐系统java 餐厅预定系统 餐厅预订系统 点餐座位预定系统 餐厅后台管理系统 点餐系统 外卖点餐系统 springboot餐厅预约系统
- PMP中工具与技术归类
- 三方协议服务器不填,毕业生三方协议可以不填么
- 微型计算机结构认识实验,实验一 微型计算机结构认识
- 什么是对象切片(Object Slicing)?
- python中 什么意思_Python里面的这几个梗,你能回答出来吗
- 基于Web的校园跑腿管理系统的设计与实现