博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - Find Duplicate Subtrees
阅读量:6293 次
发布时间:2019-06-22

本文共 1384 字,大约阅读时间需要 4 分钟。

Given a binary tree, return all duplicate subtrees. For each kind of duplicate subtrees, you only need to return the root node of any one of them.Two trees are duplicate if they have the same structure with same node values.Example 1:        1       / \      2   3     /   / \    4   2   4       /      4The following are two duplicate subtrees:      2     /    4and    4Therefore, you need to return above trees' root in the form of a list.

这道题考的是DFS+序列化二叉树

我们将每一个节点的左子节点的值和右结点的值都存储下来,组成一个字符串,作为索引,将对应节点保存到map里。

如果一样的字符串已经出现过一次了,我们就把他的root保存在要返回的list中:

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {        Map
map; List
list; public List
findDuplicateSubtrees(TreeNode root) { this.map = new HashMap<>(); this.list = new ArrayList<>(); collect(root); return list; } private String collect (TreeNode node ){ if(node == null){return "#";} String serial = node.val +","+collect(node.left) +","+collect(node.right); map.put(serial, map.getOrDefault(serial,0)+1); if(map.get(serial) ==2 ){ list.add(node); } return serial; }}

  

转载于:https://www.cnblogs.com/incrediblechangshuo/p/9703025.html

你可能感兴趣的文章
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>
IOE,为什么去IOE?
查看>>
Storm中的Worker
查看>>
dangdang.ddframe.job中页面修改表达式后进行检查
查看>>