《大话数据结构》----第六章---树(学习小结 1)


一 、树是什么?

1.1 树的基本概念

  • 树(Tree) 是n (n>=0)个结点的有限集。
  • n=0 时称为空树
  • 在任意一颗非空树中 :
  1. 有且仅又一个特定的成为根(root)的节点
  2. 当 n>1 是其余节点可分为m(m>0)个互不相交的有限集T1、T2、...... 、Tm ,其中每一个集合本身又是一颗树,并且成为根的子树(SubTree)

                              

《大话数据结构》----第六章---树(学习小结 1)_第1张图片

图 6-2-1 中的子树T1 和子树T2 就是根节点A 的子树 。

《大话数据结构》----第六章---树(学习小结 1)_第2张图片

 

  • n>0时,根结点是唯一的,不可能存在多个根结点,别和现实中的大树混在一现实中的树有很多根须,那是真实的树,数据结构中的树是只能有一个根结点。
  • m>0 时,子树的个数没有限制,但他们一定是互不相交的

1.2 树的节点定义?

  • 树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)
  1. 度为0的结点称为叶结点(leaf)终端结点.度不为0的结点称为非终端结点或分支结点
  2. 除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。如图b-2-4所示,因为这棵树结点的度的最大值是结点D的度,为3,所以树的度也为3。

《大话数据结构》----第六章---树(学习小结 1)_第3张图片

1.2 树的节点间的关系是什么?

  • 节点的子树的根是该节点的孩子(child),相应地,该节点称为孩子的双亲(parent)
  • 同一个双亲的孩子之间互成为兄弟(Sibling)
  • 结点的祖先是从根到该节点所经分支上的所有及节点。
  • 以某节点为根的子树中的任一节点都成为该节点的子孙

     如图 6-2-5所示

《大话数据结构》----第六章---树(学习小结 1)_第4张图片

1.4 树的其他相关概念

《大话数据结构》----第六章---树(学习小结 1)_第5张图片

《大话数据结构》----第六章---树(学习小结 1)_第6张图片

  • 线性结构与树结构比较:

《大话数据结构》----第六章---树(学习小结 1)_第7张图片

 

二、树的存储结构是怎样的?

三种表示方法:双亲表示法、孩子表示法、孩子兄弟表示法

2.1 双亲表示法

《大话数据结构》----第六章---树(学习小结 1)_第8张图片

《大话数据结构》----第六章---树(学习小结 1)_第9张图片

2.2 孩子表示法

孩子表示法产生前奏:

在孩子表示法产生之前,由于树中每个结点可能有多颗子树,可以考虑用多重链表,即每个结点有多个指针域,其中每个指针指向一颗子树的根结点,我们把这种方法叫做多重链表表示法。不过,树的每个结点的度,也就是它的孩子个数是不同的。所以可以设计两种方案来解决

  • 方案一:

《大话数据结构》----第六章---树(学习小结 1)_第10张图片

存在缺陷:有很多节点的指针域是空的,浪费了大量空间。

  •   方案二

 《大话数据结构》----第六章---树(学习小结 1)_第11张图片

存在缺陷:各个节点的链表结构并不一致,在运算上会消耗过多时间。

孩子表示法:把每个结点的孩子结点排列起来,以单链表作存储结构,则n个结点有n个孩子链表,如果是叶子结点则此单链表为空。然后n个头指针又组成一个线性表,采用顺序存储结构,存放进一个一维数组中,如图6-4-4所示

《大话数据结构》----第六章---树(学习小结 1)_第12张图片

双亲孩子表示法 :

《大话数据结构》----第六章---树(学习小结 1)_第13张图片

将双亲与孩子结构结合到表中

2.3 孩子兄弟表示法

《大话数据结构》----第六章---树(学习小结 1)_第14张图片

 

《大话数据结构》----第六章---树(学习小结 1)_第15张图片

 

 

 

 

 

你可能感兴趣的:(学习资料)