11.14数据结构----二叉树,树,森林之间的转换

昨天我学习了森林与二叉树转换中的树转换成二叉树,我得先回顾一下,怎么说?他的四个步骤分别是:1.加虚线法,就是在树的每层按从“左至右”的顺序在兄弟结点之间加虚线相连。2.去连线,即除最左的第一个子结点外,父结点与所有其它子结点的连线都去掉。3.旋转,将树顺时针旋转450,原有的实线左斜。4. 整型。将旋转后树中的所有虚线改为实线,并向右斜。顺着这个我就开始说一下今天所学的知识了。今天花了很大一部分时间在练习上,对于今天的总结可能就相对来说少一点了,我觉得知识点跟上的同时,做练习是必不可少的部分,就算你说得出来你学了什么,他叫什么,你也理解他是个什么东西,但是跟你会不会用,在哪些地方用,如何用,用的灵不灵活,扩展深度又怎么样,关系就是非常大的咯~~所以学了就要用练习去巩固它~好了废话不多说,先总结一下吧

今天开始学了森林与二叉树转换中的另一个就是二叉树转换成树。它无非就是昨天所学的树转换成二叉树的还原嘛,那对于一棵转换后的二叉树,如何还原成原来的树?带着思考哦。嘻嘻~~当然也可以想一下昨天转换的步骤跟今天有什么联系吗?它的步骤(1)还是加虚线,但跟1的有所不同哦!他是这样子的,即若某结点i是其父结点的左子树的根结点,则将该结点i的右子结点以及沿右子链不断地搜索所有的右子结点,将所有这些右子结点与i结点的父结点之间加虚线相连。(2)去连线。去掉二叉树中所有父结点与其右子结点之间的连线。(3)规整化。将图中各结点按层次排列且将所有的虚线变成实线。Ok!就这样而已,就可以还原了。再说接下来的吧,那就到了森林转换成二叉树:当一般的树转换成二叉树后,二叉树的右子树必为空。若把森林中的第二棵树(转换成二叉树后)的根结点作为第一棵树(二叉树)的根结点的兄弟结点,则可导出森林转换成二叉树的转换!很好,算法呢?我也简单说一下我记得的吧~设F={T1, T2,⋯,Tn}是森林,则按以下规则可转换成一棵二叉树B=(root,LB,RB),有两种情况,第一呢就是当n=0,则B是空树;第二就是当n>0,则二叉树B的根是森林T1的根root(T1),B的左子树LB是B(T11,T12, ⋯,T1m) ,其中T11,T12, ⋯,T1m是T1的子树(转换后),而其右子树RB是从森林F’={T2,T3,⋯,Tn}转换而成的二叉树。到此就可以说到如何转换了,它的步骤分两步:一,将F={T1, T2,⋯,Tn} 中的每棵树转换成二叉树。二,按给出的森林中树的次序,从最后一棵二叉树开始,每棵二叉树作为前一棵二叉树的根结点的右子树,依次类推,则第一棵树的根结点就是转换后生成的二叉树的根结点。这个完了那就到第三个转换咯---二叉树转换成森林,很显然有了前面的思想,既然明白了,对于这个来说其实也不难,却不知道我是否理解的深呢,不管,反正我记得是怎么样我就说吧~~

同理,若B=(root,LB,RB)是一棵二叉树,则可以将其转换成由若干棵树构成的森林:F={T1, T2,⋯,Tn} 。转换的算法其实还好吧,1. 若B是空树,则F为空。2. 若B非空,则F中第一棵树T1的根root(T1)就是二叉树的根root, T1中根结点的子森林F1是由树B的左子树LB转换而成的森林;F中除T1外其余树组成的的森林F’={T2,T3,⋯,Tn} 是由B右子树RB转换得到的森林。说了算法,当然重点还是要说还原步骤了1.去连线。将二叉树B的根结点与其右子结点以及沿右子结点链方向的所有右子结点的连线全部去掉,得到若干棵孤立的二叉树,每一棵就是原来森林F中的树依次对应的二叉树。2.二叉树的还原。将各棵孤立的二叉树按二叉树还原为树的方法还原成一般的树。接下来是一个大节来的,就是树和深林的遍历,才学了没多少,今天就先不说了。今天主要用来做练习了,就是为了巩固之前所学的,要不然太混乱了思维。好了,今天总结就到这里了,明天再接再厉哦!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值