给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。

两棵树重复是指它们具有相同的结构以及相同的结点值。

示例 1:

1
       / \
      2   3
     /   / \
    4   2   4
       /
      4
下面是两个重复的子树:

2
     /
    4

4
因此,你需要以列表的形式返回上述重复子树的根结点。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-duplicate-subtrees
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解法:

class Solution {
public:vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {vector<TreeNode*> res;unordered_map<string, int> m;helper(root, m, res);return res;}string helper(TreeNode* node, unordered_map<string, int>& m, vector<TreeNode*>& res) {if (!node) return "#";string str = to_string(node->val) + "," + helper(node->left, m, res) + "," + helper(node->right, m, res);if (m[str] == 1) res.push_back(node);++m[str];return str;}
};

652. 寻找重复的子树相关推荐

  1. 9.9 力扣652. 寻找重复的子树

    652. 寻找重复的子树 - 力扣(LeetCode) 给定一棵二叉树 root,返回所有重复的子树. 对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 如果两棵树具有相同的结构和相同的结 ...

  2. LeetCode 652. 寻找重复的子树(DFS)

    1. 题目 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1:1/ \2 3/ / \4 ...

  3. 数据结构与算法之LeetCode-652. 寻找重复的子树 - 力扣(1024程序员节)

    652. 寻找重复的子树 - 力扣(LeetCode) /*** Definition for a binary tree node.* function TreeNode(val, left, ri ...

  4. LeetCode-652. 寻找重复的子树

    题目描述: 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可. 两棵树重复是指它们具有相同的结构以及相同的结点值. 示例 1: 1/ \2 3/ / \4 ...

  5. 算法---------寻找重复的子树(Java版本)

    题目描述: 给定一棵二叉树,返回所有重复的子树.对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可.两棵树重复是指它们具有相同的结构以及相同的结点值.示例 1:1/ \2 3/ / \4 2 ...

  6. 寻找重复的子树 Find Duplicate Subtrees

    2018-07-29 17:42:29 问题描述: 问题求解: 本题是要求寻找一棵树中的重复子树,问题的难点在于如何在遍历的时候对之前遍历过的子树进行描述和保存. 这里就需要使用之前使用过的二叉树序列 ...

  7. Python高效率遍历文件夹寻找重复文件

    前言 为什么要写这篇文章呢...主要还是业务中有个需求,遍历一个将近200w数据的文件夹,大部分还都是视频文件那种,但是这玩意用的次数还不多,做文件夹index也不是很ok,所以写了一个脚本来处理这个 ...

  8. LeetCode/LintCode 题解丨一周爆刷双指针:寻找重复的数

    描述 给出一个数组 nums 包含 n + 1 个整数,每个整数是从 1 到 n (包括边界). 保证至少存在一个重复的整数.假设只有一个重复的整数,找出这个重复的数. 不能修改数组(假设数组只能读) ...

  9. 最高效寻找重复数据,如何高效率的查找到数组中的重复值

    /*** @author zc*/ public class FindRepeatNumber {/**题目:在指定的数组中寻找重复的数字,假定当前数组中只有两个数字是相同的,并且不能借助其他容器*/ ...

最新文章

  1. pandas批量为列名添加字符并重命名实战
  2. 多重继承的构造函数和析构函数
  3. 将win7电脑变身WiFi热点,让手机、笔记本共享上网
  4. 【转】DevOps到底是什么意思?
  5. 66319d电源使用说明书_电热水壶怎么使用?电热水壶烧不开水的问题是什么?
  6. Qt学习笔记-OpenGL做正方体并旋转
  7. R语言读取(加载)txt格式数据为dataframe、依据学号字段从dataframe随机抽取10位同学的数据
  8. html js 鼠标变图片大小,js之图片变大变小效果
  9. 如何确定自己的科研课题?
  10. Gmail大改版,36岁的电子邮箱为何未像BBS一样消亡?
  11. 免费混合虚拟化OVM数据中心解决方案
  12. openBravo数据库结构分析
  13. sqlserver 2000 sp3补丁
  14. Angular判断对象不否为空的方法
  15. PYTHON实现迅雷、FLASHGET、QQ旋风转真实链接、磁链转种子文件、迅雷快传链接抓取
  16. 如何判断车距:车距判断技巧图解
  17. 《武则天正传》读后感
  18. S3C22440 JTAG连接不上
  19. 艾伦图灵_艾伦唤醒控制
  20. 两次腾讯面试挂二面的苦逼经历

热门文章

  1. c/c++编码规范(2)--作用域
  2. 步骤菜单使用css3实现
  3. IBM System p5 服务器 HACMP 安装指南
  4. c语言编译器怎样退出全屏,BOOX 应用软件怎样退出全屏模式?
  5. c语言c1变成e并输出,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
  6. linux内核percpu变量声明,Linux kernel percpu变量解析
  7. activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...
  8. java response 获得code_Java教程分享使用HttpClient抓取页面内容
  9. 小熊错误_新手爸妈第一年带娃时,很容易犯的7个错误,对照看看你中了没
  10. C语言switch中break的作用,C语言中switch...case语句中break的重要性