python二叉树怎样寻找重复的子树
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章给大家介绍python二叉树怎样寻找重复的子树,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意
千家信息网最后更新 2025年12月01日python二叉树怎样寻找重复的子树
这篇文章给大家介绍python二叉树怎样寻找重复的子树,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。
两棵树重复是指它们具有相同的结构以及相同的结点值。
示例 1:
1
/ \
2 3
/ / \
4 2 4
/
4
下面是两个重复的子树:
2
/
4
和
4
因此,你需要以列表的形式返回上述重复子树的根结点。
解题思路:
1,重复子树意思是从根节点到叶子节点一样
2,重复多次只取一个,所以用hash存次数,取次数为2的作为解雇
3,虽然前序+中序遍历可以恢复二叉树,但是对于元素值相同的不同二叉树,前序,中序遍历结果是一样的,没法区分。
0 和 0
/ \
0 0
4,因此采用leetcode序列化方式,用特殊字符表示孩子是null,然后先序遍历,可以唯一表示一棵子树。
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/func findDuplicateSubtrees(root *TreeNode) []*TreeNode {a:=make(map[string]int)a1,tn:=serllize(root,a)fmt.Println(a1)return tn}func serllize(root *TreeNode,s map[string]int)(map[string]int,[]*TreeNode ){var tn []*TreeNodeif root==nil{return s,tn}s1:=ts(root)s[s1]++if s[s1]==2{tn=append(tn,root)}sl,l:=serllize(root.Left,s)sr,r:=serllize(root.Right,sl)tn=append(tn,l...)tn=append(tn,r...)return sr,tn}func ts(root *TreeNode)(string){s:="*"if root!=nil{s+=fmt.Sprintf("%d",root.Val)+","l:=ts(root.Left)s+=lr:=ts(root.Right)s+=r}return s}
关于python二叉树怎样寻找重复的子树就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
子树
相同
结点
内容
更多
次数
节点
帮助
不同
不错
特殊
两个
元素
兴趣
叶子
字符
孩子
小伙
小伙伴
序列
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术管理员
vb 数据库升序排列
万紫千红服务器上市了没
网络安全趋势白皮书
实时数据库移动应用
易班网络技术部未来规划
为什么苹果会验证服务器信息
好用的软件开发框架
天津网络安全网
与数据库中的语句计算相似性
网络技术开发费用
软件开发平台建设心得
网络安全周讲话全文
刀剑英雄怎么找服务器
木瓜互联网科技手抄报模板祖国
请手动创建db2管理服务器
阿里云服务器数据盘迁移
国家网络安全应急预案2019
中科可控服务器产地是哪
志高网络技术就业
扎实搞好网络安全风险评估
刀剑英雄怎么找服务器
联想a60服务器
软件开发计划由谁编写
丰台区管理网络技术服务介绍
开普蓝网络技术
国有企业网络安全法处罚
网络技术类大学
服务器里双芯片的显卡
数据库中能建立几种关系