大话数据结构 树

树的定义

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

大话数据结构 树_第1张图片

对于树的定义还要强调2点:

(1)n>0时根结点是唯一的,不可能存在多个根结点,只能有一个根结点。

(2)m>0时子树的个数没有限制,但他们一定是互不相交的。

树的结点包含一个数据元素以及若干指向其子树的分支。结点拥有的子树数称为结点的度(Degree)。度为0的结点称为叶结点(Leaf)或者终端结点。度不为0的结点称为非终端结点或分支结点。除根结点之外,分支结点也称为内部结点。树的度是树内各结点的度的最大值。

结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层,树中结点的最大层次称为树的深度(Depth)或者高度。

大话数据结构 树_第2张图片

如果将树中结点的各子树看成从左至右是有次序的,不能互换的,则称该树为有序树,否则称为无序树。

森林是m(m>=0)棵互不相交的树的集合。

树的存储结构

(1)双亲表示法

我们假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点到链表中的位置。也就是说,每个结点除了知道自己是谁以外,还知道它的双亲在哪里。

双亲表示法

其中data是数据域,存储结点的数据信息,而parent是指针域,存储该结点的双亲在数组中的下标。

由于根结点没有双亲,所以我们约定根结点的设置域为-1,这就意味者,所有的根结点都存有他双亲的位置。

大话数据结构 树_第3张图片
双亲表示法


(2)孩子表示法

(3)孩子兄弟表示法

你可能感兴趣的:(大话数据结构 树)