社区
数据结构与算法
帖子详情
求解一道二叉树的算法题
hcfilippo
2010-11-03 11:11:46
题目如下:
给出一个森林(n棵二叉树),其中这些二叉树的左右子树可以随便互换
再给出一棵二叉树,求能否在森林里面找到和该二叉树相同的二叉树
高手请说说具体的解决思路
补充:问题是求森林里的二叉树能否通过一系列变换而达到和目标二叉树相同
...全文
158
7
打赏
收藏
求解一道二叉树的算法题
题目如下: 给出一个森林(n棵二叉树),其中这些二叉树的左右子树可以随便互换 再给出一棵二叉树,求能否在森林里面找到和该二叉树相同的二叉树 高手请说说具体的解决思路 补充:问题是求森林里的二叉树能否通过一系列变换而达到和目标二叉树相同
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hcfilippo
2010-11-03
打赏
举报
回复
[Quote=引用 5 楼 michael122 的回复:]
这就是dp的精髓了,分析的时候自顶向下,实现的时候自下向上
当然也可以用备忘录
引用 2 楼 hcfilippo 的回复:
引用 1 楼 michael122 的回复:
就是比较两颗二叉树是否相同的问题吧
用递归:
左子树=左子树,右子树=右子树
或
左子树=右子树,右子树=左子树
这样判断的话最坏情况的复杂度是指数级的
[/Quote]
好吧。。。感謝你
michael122
2010-11-03
打赏
举报
回复
这就是dp的精髓了,分析的时候自顶向下,实现的时候自下向上
当然也可以用备忘录
[Quote=引用 2 楼 hcfilippo 的回复:]
引用 1 楼 michael122 的回复:
就是比较两颗二叉树是否相同的问题吧
用递归:
左子树=左子树,右子树=右子树
或
左子树=右子树,右子树=左子树
这样判断的话最坏情况的复杂度是指数级的
[/Quote]
hcfilippo
2010-11-03
打赏
举报
回复
[Quote=引用 3 楼 fancymouse 的回复:]
dp[i][j]表示第一棵树以i为根的和第二棵树以j为根的同构。所以平方肯定能搞定。
线性嘛……俺不会
[/Quote]
嗯,dp是好方法,看看我的理解有没有错
设i1,i2是i的左右儿子,j1,j2是j的左右儿子
递推公式:dp[i][j] = dp[i1][j1] && dp[i2][j2] || dp[i1][j2] && dp[i2][j1]
预处理算出以i为根的子树节点数count[i],排序一下
初始化:count[i] == 1的节点两两同构
实际操作中不用算出所有的i,j组合,因为要满足count[i] == count[j]才有可能同构
复杂度为:(n/2)^2 + (n/4)^2 + …… + 1 = (n^2)/3
FancyMouse
2010-11-03
打赏
举报
回复
dp[i][j]表示第一棵树以i为根的和第二棵树以j为根的同构。所以平方肯定能搞定。
线性嘛……俺不会
hcfilippo
2010-11-03
打赏
举报
回复
[Quote=引用 1 楼 michael122 的回复:]
就是比较两颗二叉树是否相同的问题吧
用递归:
左子树=左子树,右子树=右子树
或
左子树=右子树,右子树=左子树
[/Quote]
这样判断的话最坏情况的复杂度是指数级的
michael122
2010-11-03
打赏
举报
回复
就是比较两颗二叉树是否相同的问题吧
用递归:
左子树=左子树,右子树=右子树
或
左子树=右子树,右子树=左子树
树和
二叉树
(优化
算法
)
这是一个基于生成树的
算法
,可以先用回溯、递推求出
二叉树
,再用
二叉树
求解
,主要用于遍历问
题
!
二叉树
相关
算法
源代码大全
二叉树
相关
算法
源代码大全,包括
二叉树
的递归创建、先序中序后序遍历、
二叉树
结点数
求解
、
二叉树
叶结点路径
求解
、
二叉树
深度等常见的
二叉树
算法
。 附带一个根据
二叉树
的先序遍历序列和中序遍历序列输出后序遍历序列的
算法
。
二叉树
的一些
算法
:统计叶子节点个数,复制,深度
求解
总结的一些关于
二叉树
的
算法
,与大家共享(如统计叶子节点,复制
二叉树
,节点数目,深度
算法
等等等)
软件与技术基础
二叉树
代码主要包括了
二叉树
的基本操作,
二叉树
的建立、
二叉树
的中序、先序、后序遍历
算法
,并进行了一定的扩展,如
求解
一棵二叉排序树的插入
算法
、
二叉树
的深度
求解
,以及倒序
算法
。希望对大家有所帮助
二叉树
算法
题
汇总
目录
二叉树
的遍历 前序遍历 中序遍历 后序遍历 层次遍历 基础
算法
求
二叉树
中的节点个数 求
二叉树
的深度(高度) 求
二叉树
第k层的节点个数 求
二叉树
中叶子节点的个数 判断两棵
二叉树
是否相同的树 判断
二叉树
是不是平衡
二叉树
求
二叉树
的镜像 判断两个
二叉树
是否互相镜像 判断是否为二分查找树BST 本文的实例代码基于JAVA编写 首先给出节点的数据结构 publi...
数据结构与算法
33,010
社区成员
35,327
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章