4.8二叉树与森林

4.8二叉树与森林

树与二叉树

如何将一颗树转换为二叉树?

树的孩子兄弟法与二叉链表表示法都是用到两个指针,多以可以把孩子兄弟表示法理解成二叉链表。

孩子兄弟表示法:
[外链图片转存失败(img-TxNeoc8q-1566653979473)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566652488642.png)]

孩子兄弟表示法理解成二叉链表。

[外链图片转存失败(img-4awXDWk9-1566653979473)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566652512091.png)]

树转化成二叉树的手动模拟方法:

1)将同一结点的各个孩子用线串联起

2)将每个结点的子树分支,从左到右,除了第一个以外全部删除。

[外链图片转存失败(img-D7nyj4nO-1566653979474)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566652736538.png)]

[外链图片转存失败(img-32k8IU6p-1566653979474)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566652764339.png)]

二叉树转化成树的手动模拟方法:

1)将二叉树从上到下分层,并调节成水平。(每遇到左孩子则为为一层 )。

2)找到每一层的双亲结点(方法为它的上一层项链的那个结点就是双亲结点)。

3)将每一层结点的和其双亲相连,同时删除该双亲结点各个孩子结点之间的联系。

[外链图片转存失败(img-5Nka7BOA-1566653979474)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566653074870.png)]

[外链图片转存失败(img-IFp8goF0-1566653979475)(C:\Users\liuhao\AppData\Roaming\Typora\typora-user-images\1566653050642.png)]

森林与二叉树

森林定义:是m(m>=0)棵互不相交的树的集合。

[外链图片转存失败(img-YNyfT5lG-1566653979475)(assets/1566653262228.png)]

如何让将森林转换成二叉树:
1)将森林中每棵树都转换成二叉树

2)将第二棵树作为第一棵树的根结点的右子树,将第三棵树作为第二棵树的根结点的右子树…以此类推

[外链图片转存失败(img-RNLJIgv4-1566653979476)(assets/1566653571360.png)]

[外链图片转存失败(img-kyuwcxVb-1566653979476)(assets/1566653608955.png)]

如何让将森林转换成二叉树:

反复断开二叉树根结点的右孩子的右子树指针,存在根结点的有右孩子的二叉树为止。

[外链图片转存失败(img-E3dprHv4-1566653979476)(assets/1566653745918.png)]

[外链图片转存失败(img-oh18fbgn-1566653979477)(assets/1566653759783.png)]

树于森林的遍历:

树的遍历包含先序和后序:

[外链图片转存失败(img-CCXfwEn1-1566653979477)(assets/1566653830974.png)]

[外链图片转存失败(img-2L8dt6Cy-1566653979477)(assets/1566653853160.png)]
[外链图片转存失败(img-nwLHm1eA-1566653979477)(assets/1566653890574.png)]
[外链图片转存失败(img-sNTCrkPP-1566653979478)(assets/1566653911506.png)]

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值