zoukankan      html  css  js  c++  java
  • 652. 寻找重复的子树

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

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

    示例 1:

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

    2
    /
    4

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

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

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
     *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
     *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
     * };
     */
    class Solution {
    public:
        unordered_map<string,int>hash;
        vector<TreeNode*>res;
        string dfs(TreeNode* node){
            if(!node)return "NULL";
            string left=dfs(node->left);
            string right=dfs(node->right);
            string s=to_string(node->val)+','+left+','+right;
            if(++hash[s]==2)res.emplace_back(node);
            return s;
        }
        vector<TreeNode*> findDuplicateSubtrees(TreeNode* root) {
            dfs(root);
            return res;
        }
    };
  • 相关阅读:
    三、thinkphp
    二、thinkphp
    一、thinkphp
    层次数据结构字符串处理,split函数使用
    jquery div层级选择器
    css ul li 制作导航条
    个人Android作品开发——FinancePad记账通
    springMVC+ibatis数据持久化入门级学习例子
    java reflect 例子
    java给图片加水印代码
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14007671.html
Copyright © 2011-2022 走看看