【2017年整理】树,二叉树,森林的转化

上传人:豆浆 文档编号:1052238 上传时间:2017-05-26 格式:DOC 页数:6 大小:160.50KB
返回 下载 相关 举报
【2017年整理】树,二叉树,森林的转化_第1页
第1页 / 共6页
【2017年整理】树,二叉树,森林的转化_第2页
第2页 / 共6页
【2017年整理】树,二叉树,森林的转化_第3页
第3页 / 共6页
【2017年整理】树,二叉树,森林的转化_第4页
第4页 / 共6页
【2017年整理】树,二叉树,森林的转化_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《【2017年整理】树,二叉树,森林的转化》由会员分享,可在线阅读,更多相关《【2017年整理】树,二叉树,森林的转化(6页珍藏版)》请在金锄头文库上搜索。

1、对于一般树,树中孩子的次序并不重要,只要双亲与孩子的关系正确即可。但在二叉树中,左、右孩子的次序是严格区分的。所以在讨论二叉树与一般树之间的转换时,为了不引起混淆,约定按树上现有结点次序进行转换。这里研究二叉树与一般树之间的转换,可以了解两者之间的内在本质联系,同时在研究解决一般树的问题时,有时可以将其转换为二叉树问题来解决。树或森林与二叉树之间有一个自然的一一对应关系。任何一个森林或一棵树可唯一地对应到一棵二叉树。反之,任何一棵二叉树也能唯一地对应到一个森林或一棵树。树、森林到二叉树的转换1)将树转换为二叉树树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就

2、能将树转换成相应的二叉树。将一般树转化为二叉树的思路,主要根据树的孩子-兄弟存储方式而来,步骤是:加线:在各兄弟结点之间用虚线相连。可理解为每个结点的兄弟指针指向它的一个兄弟。抹线:对每个结点仅保留它与其最左一个孩子的连线,抹去该结点与其他孩子之间的连线。可理解为每个结点仅有一个孩子指针,让它指向自己的左孩子。旋转:把虚线改为实线从水平方向向下旋转 45,成右斜下方向。原树中实线成左斜下方向。这样就树的形状成呈现出一棵二叉树。下图所示的树可转换为对应的二叉树。2)将一个森林转换为二叉树森林是树的有限集合。由上节可知,一棵树可以转换为二叉树(该二叉树没有右子树),一个森林就可以转换为二叉树(没有

3、右子树)的森林。将森林转换为二叉树的一般步骤为:将森林中每棵子树转换成相应的二叉树,形成由若干二叉树组成的森林。按森林中原有树的先后次序,依次将后边一棵二叉树作为前边一棵二叉树根结点的右子树,这样整个森林就生成了一棵二叉树,实际上第一棵树的根结点便是生成后的二叉树的根结点。下图是将一个森林转化为一棵二叉树的示例下图中,图 a 包含三棵树的森林可转换为图 c 的二叉树。二叉树到树、森林的转换1)二叉树转换为一般树此时的二叉树必须是由某一树(一般树)转换而来的没有右子树的二叉树(若二叉树有右子树则说明此二叉树可以拆分成森林)。并非随便一棵二叉树都能还原成一般树。其还原过程也分为三步:加线:若某结点

4、 i 是双亲结点的左孩子,则将该结点 i 的右孩子以及当且仅当连续地沿着右孩子的右链不断搜索到所有右孩子,都分别与结点 i 的双亲结点用虚线连接。抹线:把原二叉树中所有双亲结点与其右孩子的连线抹去。这里的右孩子实质上是原一般树中结点的兄弟,抹去的连线是兄弟间的关系。进行整理:把虚线改为实线,把结点按层次排列。下图把二叉树还原为一般树:2)二叉树转换为森林将一棵二叉树转化成森林,可按如下步骤进行:抹线:将二叉树根结点与其右孩子之间的连线,以及沿着此右孩子的右链连续不继搜索到的右孩子间的连线抹掉。这样就得到了若干棵根结点没有右子树的二叉树。将得到的这些二叉树用前述方法分别转化成一般树。整理第步得到的树,使之规范,这样得到森林。总结根据树与二叉树的转换关系以及二叉树的遍历定 义可以推知,a.树的先序遍历与其转换的相应的二 叉树的先序遍历的结果序列相同;b.树的后序遍历 与其转换的二叉树的中序遍历的结果序列相同;c.树的层序遍历与其转换的二叉树的后序遍历的结 果序列相同。由森林与二叉树的转换关系以及森 林与二叉树的遍历定义可知,按先根次序周游树(树林)与按前序周游对应的二叉树相同,按后根次序周游树(树林)与按对称序周游对应的二叉树相同。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号