树和二叉树的转换
2015-03-12 20:23
1041 查看
树和二叉树是两种不同的数据结构,树实现起来比较麻烦,但是树可以转换为二叉树进行处理,处理完以后再从二叉树还原为树。
下面说说转换的方法:
1. 树转换为二叉树
(1) 树中所有相同双亲结点的兄弟结点之间加一条连线。
(2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。
(3) 整理所有保留的和添加的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置。
如下是树转换为二叉树的过程示例图:
2.二叉树还原为树
(1) 若某结点是其双亲结点的左孩子,则把该结点的右孩子、右孩子的右孩子……都与该结点的双亲结点用线连起来。
(2) 删除原二叉树中所有双亲结点与右孩子结点的连线。
(3) 整理所有保留的和添加的连线,使每个结点的所有孩子结点位于相同层次高度。
如下是二叉树还原为树的过程示意图:
(由于我自己太懒了,图没有自己画,以上图片来自百度图片搜索)
下面说说转换的方法:
1. 树转换为二叉树
(1) 树中所有相同双亲结点的兄弟结点之间加一条连线。
(2) 对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线。
(3) 整理所有保留的和添加的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置。
如下是树转换为二叉树的过程示例图:
2.二叉树还原为树
(1) 若某结点是其双亲结点的左孩子,则把该结点的右孩子、右孩子的右孩子……都与该结点的双亲结点用线连起来。
(2) 删除原二叉树中所有双亲结点与右孩子结点的连线。
(3) 整理所有保留的和添加的连线,使每个结点的所有孩子结点位于相同层次高度。
如下是二叉树还原为树的过程示意图:
(由于我自己太懒了,图没有自己画,以上图片来自百度图片搜索)
相关文章推荐
- 转换二叉树与广义表(C语言版)[二叉树的定义]
- 树、森林及二叉树的相互转换 – 数据结构和算法50
- 树、森林和二叉树的转换
- 二叉树、树和森林的遍历和转换
- 【遍历二叉树】11把二叉树转换成前序遍历的链表【Flatten Binary Tree to Linked List】
- 树,森林,二叉树的相互转换
- 树、森林和二叉树之间的转换
- BST(搜索二叉树)与双向链表相互转换
- 树、森林及二叉树的相互转换 - 数据结构和算法50
- 将一个数组转换成深度最低的二叉树
- 二叉树漫游——编程技术与技巧总结(下):递归转换为非递归
- 树的概念总结;树的存储结构;树、二叉树、森林的相互转换
- 树、森林与二叉树的相互转换
- 二叉树、树、森林转换
- 森林 树--》二叉树的转换
- 树、森林和二叉树的转换
- 树、二叉树、森林之间的转换方法
- 树和二叉树的转换,森林和二叉树的转化
- 将搜索二叉树转换成有序的双向链表
- 二叉树 树 森林 的转换(oj)