力扣labuladong——一刷day33

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • [一、力扣652. 寻找重复的子树](#一、力扣652. 寻找重复的子树)

前言


前序位置的代码只能从函数参数中获取父节点传递来的数据,而后序位置的代码不仅可以获取参数数据,还可以获取到子树通过函数返回值传递回来的数据。

一、力扣652. 寻找重复的子树

java 复制代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    List<TreeNode> res;
    Map<String,Integer> invild;
    public List<TreeNode> findDuplicateSubtrees(TreeNode root) {
        res = new LinkedList<>();
        invild = new HashMap<>();
        fun(root);
        return res;
    }
    public String fun(TreeNode root){
        if(root == null){
            return "#";
        }
        String le = fun(root.left);
        String ri = fun(root.right);
        String cur = le + "," + ri + "," + root.val;
        if(invild.getOrDefault(cur,0) == 1){
            res.add(root);
        }
        invild.put(cur,invild.getOrDefault(cur,0)+1);
        return cur;
    }
}
相关推荐
梦想的旅途28 小时前
如何高效调用企业微信通讯录API管理组织架构
java·开发语言·企业微信
小程序设计8 小时前
【机械设计】磁粉检测机器人的设计与验证
算法·机器人
Navigator_Z9 小时前
LeetCode //C - 1220. Count Vowels Permutation
c语言·算法·leetcode
2601_962065259 小时前
2.启动mysql容器
java·数据库·mysql
2601_962065499 小时前
PHP For 循环
android·java·php
吃好睡好便好9 小时前
判断函数的使用
学习·算法·matlab·生活·判断函数
2601_956121979 小时前
线性DP(入门)
c++·算法·动态规划
2601_962201729 小时前
Java进阶,集合,Colllection,常见数据结构
java·数据结构·windows
彷徨而立9 小时前
【C/C++】多线程读写普通 int 变量的一些问题
java·c语言·c++
卓怡学长9 小时前
w175基于springboot校园二手物品交易平台
java·spring boot·spring·maven·intellij-idea