第6章树和二叉树6
1知识点概述树(Tree)形结构是一种很重要的非线性结构,它反映了数据元素之间的层次关系和分支关系
在计算机科学中具有广泛的应用
1、树的定义树(Tree)是n(n±0)个数据元素的有限集合
当n=0时,称这棵树为空树
在一棵非空树T中:(1)有一个特殊的数据元素称为树的根结点,根结点没有前驱结点
(2)若n〉l,除根结点之外的其余数据元素被分成m(m>0)个互不相交的集合T1,T2,…,Tm,其中每一个集合Ti(lWiWm)本身又是一棵树
树T1,T2,…,Tm称为这个根结点的子树
2、树的基本存储结构(1)双亲表示法由于树中的每一个结点都有一个唯一确定的双亲结点,所以我们可用一组连续的存储空间(即一维数组)存储树中的结点
每个结点有两个域:一个是data域,存放结点信息,另一个是parent域,用来存放双亲的位置(指针)
(2)孩子表示法将一个结点所有孩子链接成一个单链表形,而树中有若干个结点,故有若干个单链表,每个单链表有一个表头结点,所有表头结点用一个数组来描述这种方法通常是把每个结点的孩子结点排列起来,构成一个单链表,称为孩子链表
(3)双亲孩子表示法双亲表示法是将双亲表示法和孩子表示法相结合的结果
其仍将各结点的孩子结点分别组成单链表,同时用一维数组顺序存储树中的各结点,数组元素除了包括结点本身的信息和该结点的孩子结点链表的头指针之外,还增设一个域,存储该结点双亲结点在数组中的序号
(4)孩子兄弟表示法这种表示法又称为树的二叉表示法,或者二叉链表表示法,即以二叉链表作为树的存储结构
链表中每个结点设有两个链域,分别指向该结点的第一个孩子结点和下一个兄弟(右兄弟)结点
3、二叉树的定义二叉树(BinaryTree)是个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成