力扣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;
    }
}
相关推荐
旋律41412 小时前
String、StringBuilder、StringBuffer:三个"字符串",到底区别在哪?
java·后端
lengxuenong12 小时前
树状数组 · 信息学学习手册2-离散化与逆序对
c++·学习·算法
琳达爱分享12 小时前
五个线程同时去换 token,四个被踢下线:刷新接口其实不是幂等的
后端·算法·架构
十二12 小时前
【洛谷题解】P1115 最大子段和(前缀和 + 维护最小前缀)
数据结构·c++·算法·蓝桥杯
Xin77013 小时前
LeetCode 46. 全排列(回溯法)
leetcode
一条泥憨鱼13 小时前
【Redis | 黑马点评】基于Redis的消息队列 | stream消息队列 源码解读
java·数据库·redis·缓存·lua
aibo86030813 小时前
基于 Spring Boot + Vue3 的博物馆藏品管理系统设计与实现
java·spring boot·后端
fanruitian13 小时前
python 进程 线程
java·前端·python
renhongxia113 小时前
RAG检索增强生成:打通大模型与外部知识的通道
大数据·人工智能·算法
\光辉岁月/13 小时前
javaSE8-新特性-Stream&Option
java·stream·option