数据结构—树、森林与二叉树的转换(类C语言描述)
来源:互联网 发布:海岛研究所数据大全 编辑:程序博客网 时间:2024/06/08 01:14
树、森林与二叉树的转换
树或森林与二叉树之间有一个自然的一一对应关系。任何一个森林或一棵树可惟一地对应到一棵二叉树;反之,任何一棵二叉树也能惟一地对应到一个森林或一棵树。
1.树、森林到二叉树的转换
(1)将树转换为二叉树
树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:
①在所有兄弟结点之间加一连线;
②对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。
【例1】下面(a)图所示的树可转换为(c)图所示的二叉树。具体转换过程可【参见动画演示】
注意:
由于树根没有兄弟,故树转化为二叉树后,二叉树的根结点的右子树必为空。
(2)将一个森林转换为二叉树
具体方法是:
① 将森林中的每棵树变为二叉树
② 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。
【例2】下图中,左边包含三棵树的森林可转换为右边的二叉树。
具体转换过程可【参见动画演示】
2.二叉树到树、森林的转换
把二叉树转换到树和森林自然的方式是:若结点x是双亲y的左孩子,则把x的右孩子,右孩子的右孩子,…,都与y用连线连起来,最后去掉所有双亲到右孩子的连线。
【例3】下图的森林就是由例2中二叉树转换成的。
树或森林与二叉树之间有一个自然的一一对应关系。任何一个森林或一棵树可惟一地对应到一棵二叉树;反之,任何一棵二叉树也能惟一地对应到一个森林或一棵树。
1.树、森林到二叉树的转换
(1)将树转换为二叉树
树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。按照这种关系很自然地就能将树转换成相应的二叉树:
①在所有兄弟结点之间加一连线;
②对每个结点,除了保留与其长子的连线外,去掉该结点与其它孩子的连线。
【例1】下面(a)图所示的树可转换为(c)图所示的二叉树。具体转换过程可【参见动画演示】
注意:
由于树根没有兄弟,故树转化为二叉树后,二叉树的根结点的右子树必为空。
(2)将一个森林转换为二叉树
具体方法是:
① 将森林中的每棵树变为二叉树
② 因为转换所得的二叉树的根结点的右子树均为空,故可将各二叉树的根结点视为兄弟从左至右连在一起,就形成了一棵二叉树。
【例2】下图中,左边包含三棵树的森林可转换为右边的二叉树。
具体转换过程可【参见动画演示】
2.二叉树到树、森林的转换
把二叉树转换到树和森林自然的方式是:若结点x是双亲y的左孩子,则把x的右孩子,右孩子的右孩子,…,都与y用连线连起来,最后去掉所有双亲到右孩子的连线。
【例3】下图的森林就是由例2中二叉树转换成的。
0 0
- 数据结构—树、森林与二叉树的转换(类C语言描述)
- 数据结构-二叉树的遍历(类C语言描述)
- [数据结构与算法]树、森林与二叉树的转换
- 树,森林与二叉树的转换 数据结构期末复习
- <数据结构与算法>二叉搜索树(BST)的基本操作(C语言描述)
- 二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 二叉查找树 - C语言实现(摘自数据结构与算法分析 C语言描述)
- 数据结构 — 树 与 二叉树、森林
- 树、森林与二叉树的转换
- 树 森林 与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树、森林与二叉树的转换
- 树森林与二叉树的转换
- 2014/6/10
- Java SLL的双向认证
- 鳥哥的 Linux 私房菜
- Spinner 显示的两种方式
- 第2次实验——算法基本功 与 综合思考
- 数据结构—树、森林与二叉树的转换(类C语言描述)
- 算法4-6:关联数组的基本实现
- shell 中数组学习
- DBSCAN的matlab实现
- C#--遍历文件夹实例
- grep的语法和用法
- 算法4-7:关联数组的顺序接口
- Detours信息泄漏漏洞
- 数据结构-二叉树的遍历(类C语言描述)