Find Duplicate Subtrees问题及解法
来源:互联网 发布:关于网络防诈骗的知识 编辑:程序博客网 时间:2024/06/06 05:34
问题描述:
Given a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only need to return the root node of any one of them.
Two trees are duplicate if they have the same structure with same node values.
示例:
1 / \ 2 3 / / \ 4 2 4 / 4The following are two duplicate subtrees:
2 / 4and
4Therefore, you need to return above trees' root in the form of a list.
问题分析:
我们考虑把树的每一个子树都序列化,序列化机构相同的子树即为我们要找的答案。这里我们采用map来存储子树相同序列化的结构及节点。
过程详见代码:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {unordered_map<string, vector<TreeNode*>> map;vector<TreeNode*> dups;serialize(root, map);for (auto it = map.begin(); it != map.end(); it++) {if (it->second.size() > 1) dups.push_back(it->second[0]);}return dups;}string serialize(TreeNode * node, unordered_map<string, vector<TreeNode*>> &map){if (!node) return "";string s = "(" + serialize(node->left, map) + to_string(node->val) + serialize(node->right, map) + ")";map[s].push_back(node);return s;}};
阅读全文
0 0
- Find Duplicate Subtrees问题及解法
- Find the Duplicate Number问题及解法
- 652. Find Duplicate Subtrees
- 652. Find Duplicate Subtrees
- leetcode_652. Find Duplicate Subtrees
- Find Duplicate File in System问题及解法
- [leetcode]652. Find Duplicate Subtrees
- leetcode 652. Find Duplicate Subtrees
- Find Duplicate Subtrees 解题心得
- Leetcode 652. Find Duplicate Subtrees 寻找重复子树 解题报告
- Find the Difference问题及解法
- Find Peak Element问题及解法
- Find Right Interval问题及解法
- Find Pivot Index问题及解法
- Find K Closest Elements问题及解法
- leetcode 652. Find Duplicate Subtrees Map记录 + 深度优先遍历DFS
- Find All Numbers Disappeared in an Array问题及解法
- Find All Anagrams in a String问题及解法
- 前端杂记:根据页面大小动态计算字体大小
- python os.path模块
- 【转载】ListView中的setOnItemClickListener参数
- Windows下安装statsmodels
- Servlet 读取表单数据
- Find Duplicate Subtrees问题及解法
- Spring中的beanFactory和applicationContext的联系和区别
- myeclipse查看项目代码量
- 【mysql】mysql 导出全库表结构,并排除指定库
- spark的使用
- 常用电脑端口作用大曝光
- 【Scikit-Learn 中文文档】内核岭回归
- enum类使用方法
- C:整型数据与字符型数据的存储问题