树与二叉树的转换

将树转换为二叉树的步骤如下:

1加线:所有兄弟节点之间加线

2去线:保留树中每个结点与它第一个孩子的连线,删除其与其他孩子的连线

3层次调整:以根结点为轴心,将整棵树旋转,使之层次分明。

而将二叉树转换为树,正好是一个相逆的过程。

当以二叉链表做树的存储结构时,树的线序遍历和后续遍历完全可以借用二叉树的先序遍历和中序遍历的算法来实现。这其实也证实,我们找到了对树这种复杂问题的简单解决方法。

时间: 2024-11-20 16:41:47

树与二叉树的转换的相关文章

树与二叉树的转换与遍历

树的初始化函数(双亲法和孩子结点法两种), 建树函数, 输出树函数, 树的前序遍历函数(递归和非递归两种), 树的后序遍历函数(递归和非递归两种), 树的层次遍历函数, 一般树和二叉树的转换函数. 主菜单和副菜单. 主函数. 具体代码如下: #include <stdio.h> #include <malloc.h> #include <stdlib.h> //设置常量: #define MAX_TREE_SIZE 100 //一般树的存储结构有以下几种:双亲结点,孩子

树——通用树到二叉树的转换

1,已经创建了通用树结构,有必要创建另一种树结构吗? 2,简化树就直接减少结点中孩子的数量,但是这样树还能通用吗? 3,通用树结构的回顾: 1,双亲孩子表示法: 1,每个结点都有一个指向双亲的指针: 2,每个结点都有若干个指向其孩子的指针: 4,另一种树结构模型: 1,孩子兄弟表示法: 1,每个结点都有一个指向其第一个孩子的指针: 2,每个结点都有一个指向其第一个右兄弟的指针: 1,孩子兄弟表示法可以描述普通的树型结构,因为通过根结点可以访问到这一个树形结构的每一个结点: 5,孩子兄弟表示法的特

树 森林与二叉树的转换

1.树.森林为什么向二叉树转换? 因为在实际的处理问题中,大多数情况都是一对多,就向树.森林这样的数据结构! 而对于二叉树我们已经很熟悉了,所以转向我们所熟悉的结构,好处理. 2.孩子兄弟树的方法 把握左孩子右兄弟的原则: (1).树与二叉树的转换:i>以树的根结点为二叉树的根节点: ii>左孩子指针指向该根节点的第一个子结点: iii>右孩子指针指向"兄弟结点" (2).二叉树表示森林:i>二叉树的根结点是森林中第一棵树的根结点 ii>根结点的右孩子为森

树和二叉树

以下的内容做为学习笔记,复制别人的,感觉总结的比较好: 第5章 树和二叉树 本章中主要介绍下列内容:  1.树的定义和存储结构  2.二叉树的定义.性质.存储结构  3.二叉树的遍历.线索算法  4.树和二叉树的转换  5.哈夫曼树及其应用课时分配:     1.2两个学时,3四个学时,4两个学时, 5两个学时,上机两个学时重点.难点:     二叉树的遍历.线索算法.哈夫曼树及其应用 第一节 树 1.树的定义和基本运算1.1 定义    树是一种常用的非线性结构.我们可以这样定义:树是n(n≥

数据结构和算法 (二)数据结构基础之树、二叉树

Java面试宝典之二叉树的实现 我们接着上一篇数据结构继续讲解.本章系数据结构之树与二叉树,从这章开始,我们就要介绍非线性结构了,这些内容理解起来比线性表稍难一些,我尽量写的通俗一些,如果读的过程中有任何问题,请按上述方式联系我! 一.树 树 形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树结构在客观世界中是大量存在的,例如家 谱.行政组织机构都可用树形象地表示.树在计算机领域中也有着广泛的应用,例如在编译程序中,用树来表示源程序的语法结

树与森林的存储、遍历和树与森林的转换

树的存储结构 双亲表示法 孩子表示法: (a)多重链表(链表中每个指针指向一棵子树的根结点); (b)把每个跟结点的孩子结点排列起来,看成一个线性表,且以单链表做存储结构.且N个头指针也组成一个线性表. 孩子兄弟表示法://二叉树表示法或二叉链表表示法 以二叉链表做树的存储结构,链表中结点的两个链域分别指向该结点的第一个孩子结点和下一个兄弟结点(fchild 和nsibling) //孩子兄弟表示法 typedef struct CSNode{ int data; CSNode *fchild

树与二叉树(2)

[toc] 树的存储结构 树的存储结构有两种,线式存储 和 链式存储,灵活使用这两种存储结构,具有如下五种存储方式: 双亲表示法,一种顺序(线式)表示法 孩子表示法,一种链式表示法 孩子链表表示法,结合线式存储和链式存储的混合表示方式 带双亲的孩子链表表示法,结合线式存储和链式存储的混合表示方式 二叉链表(孩子 - 兄弟)存储表示法,一种链式存储方式 双亲表示法 这是一种顺序表示法,使用一维数组存储树中的节点,每个存储单元存储节点的值及其双亲节点在数组中的下标值.下面的树 T 使用双亲表示法存储

树、二叉树、森林的转换

树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明.(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子) 森林转换为二叉树 (1)把每棵树转换为二叉树. (2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来. 二叉树转换为树 是树转换为二

二叉树 树 森林之间的转换

树.森林和二叉树的转换 树转换为二叉树 (1)加线.在所有兄弟结点之间加一条连线. (2)去线.树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线. (3)层次调整.以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明.(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子) 森林转换为二叉树 (1)把每棵树转换为二叉树. (2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子,用线连接起来. 二叉