• 652.寻找重复的子树


    给定一棵二叉树 root,返回所有重复的子树。

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

    如果两棵树具有相同的结构和相同的结点值,则它们是重复的。

    示例 1:

    输入:root = [1,2,3,4,null,2,4,null,null,4]
    输出:[[2,4],[4]]

    思路:分解问题(后序)

    //定义:输入一个结点,返回以该结点为根的子树的序列化字符串
    string findString(TreeNode* root,vector& v,unordered_map& mapping) 

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. class Solution {
    13. public:
    14. //定义:输入一个结点,返回以该结点为根的子树的序列化字符串
    15. string findString(TreeNode* root,vector& v,unordered_mapint>& mapping)
    16. {
    17. if(root==nullptr)
    18. return "#";
    19. string left=findString(root->left,v,mapping);
    20. string right=findString(root->right,v,mapping);
    21. string str=left+","+right+","+to_string(root->val);//以前序或后序拼接序列化字符串,但是不能以中序拼接字符串
    22. mapping[str]++;
    23. if(mapping[str]==2)//如果同一序列化字符串出现了两次,说明有重复的子树;如果大于2,只需要返回其中任意一棵的根结点即可, 无需重复添加根节点
    24. {
    25. v.push_back(root);
    26. }
    27. return str;
    28. }
    29. vector findDuplicateSubtrees(TreeNode* root) {
    30. unordered_mapint> mapping;//mapping(子树序列化的字符串,出现的次数)
    31. vector v;
    32. findString(root,v,mapping);
    33. return v;
    34. }
    35. };

    为什么不能用中序序列化的字符串(左根右)?

          0                        0

       /                                \

    0                                     0

    这两个子树不相同,但是它们的中序序列化的字符串相同,均为#0#0#,故不能采用

    而前序与后序序列化的字符串就不相同,可以采用。

  • 相关阅读:
    计算机网络(九)——数据链路层
    house系2
    Unity InputField宽度自适应内容
    设计模式之美——单一职责原则和开闭原则
    三十六、openlayers官网示例Earthquake Clusters解析——在聚合图层鼠标触摸显示五角星
    左旋肉碱除铁,左旋肉碱铁离子超标怎么解决?
    .Net预处理器指令
    (七)文件——PHP
    OC 新建项目流程2022
    TCP三次握手四次挥手深入
  • 原文地址:https://blog.csdn.net/weixin_50437588/article/details/126164567