力扣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;
    }
}
相关推荐
sanggou6 分钟前
大数据量查询处理方案 - 内存优化与高效展示
java
没有bug.的程序员15 分钟前
Java 字节码:看懂 JVM 的“机器语言“
java·jvm·python·spring·微服务
-大头.18 分钟前
深入理解 Java 内存区域与 JVM 运行机制
java·jvm
没有bug.的程序员22 分钟前
JVM 整体架构:一套虚拟机的心脏与血管
java·jvm·spring boot·spring cloud·架构
j_xxx404_23 分钟前
C++:继承(概念及定义|作用域|基类与派生类转换|默认成员函数|与友元、静态成员关系|多继承|组合)
数据结构·c++
晨枫阳42 分钟前
不同语言的元组对比
java·前端·javascript
码银42 分钟前
【数据结构】 栈和队列
数据结构
悟能不能悟1 小时前
怎么在idea合并2个个branch
java·ide·intellij-idea
九年义务漏网鲨鱼1 小时前
蓝桥杯算法——状态压缩DP
算法·职场和发展·蓝桥杯
CappuccinoRose1 小时前
MATLAB学习文档(二十八)
开发语言·学习·算法·matlab