1. 题目

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

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

示例 1:1/ \2   3/   / \4   2   4/4
下面是两个重复的子树:2/4
和4
因此,你需要以列表的形式返回上述重复子树的根结点。

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

2. DFS解题

  • 将每个节点的前序遍历字符串,存入map的key,value存储对应的root序列数组
  • 需要注意空节点,需要返回一个任意的非空字符串区分
class Solution {unordered_map<string, vector<TreeNode*>> m;
public:vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {if (root == NULL)return {};vector<TreeNode*> ans;dfs(root);for(auto it = m.begin(); it != m.end(); ++it){if(it->second.size() != 1)ans.push_back(it->second.front());}return ans;}string dfs(TreeNode* root) {if(root == NULL)return "E";string str = to_string(root->val)+dfs(root->left)+dfs(root->right);//or//string str = dfs(root->left)+dfs(root->right)+to_string(root->val);//但是中序不可以m[str].push_back(root);return str;}
};

LeetCode 652. 寻找重复的子树(DFS)相关推荐

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

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

  2. 652. 寻找重复的子树

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

  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. LeetCode/LintCode 题解丨一周爆刷双指针:寻找重复的数

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

  8. Leetcode一起攻克搜索(BFS,DFS,回溯,并查集)

    文章目录 BFS简介 DFS简介 回溯简介 并查集简介 DFS题目 690. 员工的重要性 1.dfs解法: 2.bfs算法 547.朋友圈 dfs解法 200.岛屿数量 dfs解法 417.太平洋大 ...

  9. js实现kmp算法_「leetcode」459.重复的子字符串:KMP算法还能干这个!

    不瞒你说,重复子串问题,KMP很拿手 题目459.重复的子字符串 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: ...

最新文章

  1. C# 里怎样得到当前执行的函数名,当前代码行,源代码文件名。
  2. 数据库结构Sqlite与CoreData
  3. Linux搭建Maven私服, 使项目公用Android aar
  4. mysql的join算法_mysql的Join算法-阿里云开发者社区
  5. fit,fit_generator的使用区别
  6. Spring自学教程-注解的使用(三)
  7. 公招网报照片审核处理工具_消防员招录报名照片处理工具使用说明
  8. catia钣金根据线段折弯_钣金折弯如何确定折弯的顺序
  9. TCP/IP Model: Layers Protocol | What is TCP IP Stack?
  10. app能不能跳转外部h5_利用条件编译在app端使用h5+(网页跳转 实例)
  11. 错误处理和调试2 - C++快速入门31
  12. RubyOnRails 在linux平台安装的过程
  13. 全屏模式fullscreen
  14. 单片机控制NOKIA5110液晶屏之模块化编程
  15. 从加密朋克到赛博朋克,一文盘点热门NFT头像项目
  16. ArcGIS中实现空间内插
  17. Big Faceless PDF Library大型机的任何Java平台运行
  18. 无机物及有机物储氢材料/MNi4.8Sn0.2(M=La,Nd)合金粒子负载纳米碳管复合储氢材料/LaNi4.8Sn0.2/CNTs纳米碳管复合储氢材料
  19. jQuery中的end()方法使用介绍
  20. 第四代反应堆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 图像处理之积分图应用三(基于NCC快速相似度匹配算法)
  2. FreeRTOS学习笔记——互斥型信号量
  3. IntelliJ IDEA使用教程(很全)
  4. 实现一个简单的web服务器
  5. ASP.NET小收集:Word的编码是Unicode
  6. 胃部不适,原来好辛苦!
  7. Linux下静态库和动态库的编译连接
  8. boost库中mutex、condition_variable与mutex::scoped_lock联合使用实现线程之间的通信
  9. 初识Buildroot
  10. 多重 for 循环,如何提高效率?