数据结构之树(四)——树与二叉树的转换
作者:互联网
实现原理分析
-
将树转化成二叉树进行处理,利用二叉树的算法来实现对树的操作。
-
由于树和二叉树都可以用二叉链表作为存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系。
-
给定一棵树,可以找到唯一的一棵二叉树与之对应。
在实际操作中,把树转换成二叉链表,再接着转换成二叉树是比较繁琐的,这里,既然有二叉链表作为媒介,则它们的转换是有规律的。
树------>二叉树
- 转换方法:
- 1.加线 :在兄弟之间加一连线
- 2.抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系
- 3.旋转:以树的根结点为轴心,将整颗树顺时针转45°。
即,兄弟相连留长子
- 转换过程: 对下图的树进行二叉树转换
- 1.兄弟结点之间要连线
- 2.只保留长子与根结点之间的连线,其他与根结点的连线全部抹去。
- 3.以树的根结点(B,E,H)为中心,旋转45°,得到转换后的二叉树。
- 1.兄弟结点之间要连线
二叉树------>树
- 转换方法:
- 1.加线 :若p结点是双亲结点的左孩子,则将p的右孩子,右孩子的右孩子…沿分支找到的所有右孩子,都与p的双亲用线连起来。
- 2.抹线:抹掉原二叉树中双亲与右孩子之间的连线
- 3.调整:将结点按层次排列,形成树结构
即,左孩右右连双亲,去掉原来右孩线。
- 转换过程: 对下图的二叉树进行树转换
- 1.与结点左孩子相连的右孩子,以及右孩子的右孩子等,与该结点相连。
- 2.将原来的右孩子线去掉。
- 3.调整一下,形成树结构。
- 1.与结点左孩子相连的右孩子,以及右孩子的右孩子等,与该结点相连。
标签:结点,转换,孩子,二叉,链表,之树,二叉树,数据结构 来源: https://blog.csdn.net/daocaoren_/article/details/98446970