树和森林

原创 2016年05月31日 21:53:08
树和森林与二叉树的转换:
树如何转为二叉树?




二叉树怎样还原为树?


法一:
        ① 各森林先各自转为二叉树;② 依次连到前一个二叉树的右子树上。 
法二:
        森林直接变兄弟,再转为二叉树 
举例(方法二)


二叉树如何还原为森林?



树和森林的存储方式
树有三种常用存储方式: 
        ①双亲表示法             ②孩子表示法            ③孩子兄弟表示法
(1)用双亲表示法来存储
        思路:用一组连续空间来存储树的结点,同时在每个结点中附设一个指示器,指示其双亲结点在链表中的位置。

(2)用孩子表示法来存储
        思路:将每个结点的孩子排列起来,形成一个带表头(装父结点)的线性表(n个结点要设立n个链表); 再将n个表头用数组存放起来,这样就形成一个混合结构。

(3)用孩子兄弟表示法来存储
思路:
        用二叉链表来表示树,但链表中的两个指针域含义不同。 
        左指针指向该结点的第一个孩子; 右指针指向该结点的下一个兄弟结点。




树和森林的遍历
1. 树的遍历:
先根(次序)遍历:
        若树不空,则先访问根结点,然后依次先根遍历各棵子树。
后根(次序)遍历:
        若树不空,则先依次后根遍历各棵子树,然后访问根结点。
按层次遍历:
        若树不空,则自上而下自左至右访问树中每个结点。


森林的遍历
可以分解成三部分:        
        1.森林中第一棵树的根结点;
        2.森林中第一棵树的子树森林;
        3.森林中其它树构成的森林。

先序遍历
        若森林不空,则
        访问森林中第一棵树的根结点; 
        先序遍历森林中第一棵树的子树森林; 
        先序遍历森林中(除第一棵树之外)其余树构成的森林。
        即:依次从左至右对森林中的每一棵树进行先根遍历。
中序遍历
        若森林不空,则
        中序遍历森林中第一棵树的子树森林; 
        访问森林中第一棵树的根结点;     
        中序遍历森林中(除第一棵树之外)其余树构成的森林。 
        即:依次从左至右对森林中的每一棵树进行后根遍历。




版权声明:本文为博主原创文章,未经博主允许不得转载。

数据结构 - 树和森林表示与遍历

双亲表示法(顺序存储结构) 用一组连续的存储空间来存储树的结点,同时在每个结点中附加一个指示器(整数域) ,用以指示双亲结点的位置(下标值) 。数组元素及数组的类型定义如下: #define...
  • wangzi11322
  • wangzi11322
  • 2015年04月30日 10:03
  • 2758

树与森林总结(不包含二叉树)——legend

 树与森林: (一)树的存储结构: (1)父指针:   1.用一个一维数组存储树中的每一个节点,每一个节点包含data,parent,parent指出该节点的父节点在数组中的位置。   ...
  • legend050709
  • legend050709
  • 2014年08月29日 10:22
  • 883

关于二叉树与树(森林)的知识点详解

1.二叉树的遍历及优缺点: 前序遍历用来实现目录结构的显示。 中序遍历用来做表达式,在编译底层实现的时候,可以实现加减乘数 后序遍历可以用来实现计算目录内的文件,占用的数据大小。 二叉树最复杂...
  • tianyucad123
  • tianyucad123
  • 2016年07月08日 09:26
  • 1389

浅析数据结构之树与森林

树是一种重要的非线性数据结构
  • qq_33426650
  • qq_33426650
  • 2016年12月13日 15:38
  • 899

树、森林与二叉树相互转化原理图

1、树转换为二叉树 由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。 将树转换成二叉树的步骤是: (1)加线。就是在所有兄弟结点之间加一条...
  • sddxqlrjxr
  • sddxqlrjxr
  • 2016年04月07日 11:52
  • 15959

树、森林和二叉树之间的转换

树、森林和二叉树之间的转换   树转换为二叉树 1. 加线      在所有兄弟结点之间加一条连线。 2. 去线      树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连...
  • iw1210
  • iw1210
  • 2015年04月08日 14:33
  • 11680

数据结构---树、二叉树、森林

1、基本术语: 度:有两种度“结点的度”与“树的度”。结点的度指的是一个结点子树的个数;树的度是指树中结点度的最大值。 叶子结点:指的是没有子树的结点。 层:树是有层次的,一般根结点为第0层。规定根结...
  • iamgaowei
  • iamgaowei
  • 2014年07月28日 14:39
  • 3322

果园或森林的二叉树表示

从树的左儿子右兄弟表示法和二叉树的链式表示法可知,一般树和二叉树都可以用二叉链表作为其存储结构。因此,以二叉链表为媒介可以将一棵一般树转换为一棵二叉树。例如,图11(a)中的树可转化为图11(b)中的...
  • Kinglliam
  • Kinglliam
  • 2006年05月04日 16:59
  • 1905

树和森林和二叉树

树的存储结构 双亲表示法:        数组存储,每个结点中存储着其父亲结点在数组中的索引。 孩子表示法:        1)一个结点中存储着自己的数据域指针和指向其所有孩子的指针     ...
  • Ace_Yom
  • Ace_Yom
  • 2015年09月08日 21:04
  • 395

为什么普通树没有中序遍历和森林没有后序遍历的自己见解

为什么普通树没有中序遍历和森林没有后序遍历的自己见解
  • ccqccq007
  • ccqccq007
  • 2017年08月20日 18:50
  • 1310
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:树和森林
举报原因:
原因补充:

(最多只允许输入30个字)