1. 程式人生 > >資料結構之 樹

資料結構之 樹

樹相關的術語:

  • 節點:樹是由有限個元素組成的集合,每人元素都稱作一個節點,上圖A、B、 C、 D、 E、 F、G、H、I等都是樹的節點;
  •  節點的度:一個節點含有的子樹的個數稱為該節點的度;
  •  葉節點或終端節點:度為0的節點稱為葉節點,D,E,C,G都是葉節點;
  •  非終端節點或分支節點:度不為0的節點;
  •  子節點(孩子節點): 一個節點含有的子樹的根節點稱為該節點的子節點;
  •  父節點(雙親節點):若一個節點含有子節點,則這個節點稱為其子節點的父節點;
  •  兄弟節點:具有相同父節點的節點互稱為兄弟節點;
  •  堂兄弟節點:雙親在同一層的節點互為堂兄弟;
  •  節點的祖先:從根到該節點所經分支上的所有節點;
  •  子孫節點:以某節點為根的子樹中任一節點都稱為該節點的子孫;
  •  森林:由m(m>=0)棵互不相交的樹的集合稱為森林;
  •  樹的度:一棵樹中,最大的節點的度稱為樹的度;
  •  節點的層次:從根開始定義起,根為第1層,根的子節點為第2層,以此類推;
  •  樹的高度或深度:樹中節點的最大層次;

本文主要介紹二叉樹

 

二叉樹是遞迴定義的,其結點有左右子樹之分,邏輯上二叉樹有五種基本形態:

(1)空二叉樹——如圖(a);

(2)只有一個根結點的二叉樹——如圖(b);

(3)只有左子樹——如圖(c);

(4)只有右子樹——如圖(d);

(5)完全二叉樹——如圖(e)。

二叉樹的儲存結構模型

樹的另一種表示法:孩子兄弟表示法
A、每個結點都有一個指向其第一個孩子的指標
B、每個結點都有一個指向其第一個右兄弟的指標
資料結構(十四)——二叉樹
孩子兄弟表示法的特性:
A、能夠表示任意的樹形結構
B、每個結點包含一個數據成員和兩個指標成員
C、孩子結點指標和兄弟結點指標構成樹杈

二叉樹的特性

A、在二叉樹的第i層上最多有2^(i-1)個結點(i>=1)。
B、高度為k的二叉樹,最多有2^k-1個結點(k>=0)。
C、對任何一棵二叉樹,如果其葉結點有n個,度為2的非葉子結點有m個,則
n = m + 1。
D、具有n個結點的完全二叉樹的高度為logn + 1
E、對於有n個結點的完全二叉樹,按層次對結點進行編號(從上到下,從左到右),對於任意編號為i的結點:
資料結構(十四)——二叉樹

二叉樹型別:

(1)完全二叉樹——若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第h層有葉子結點,並且葉子結點都是從左到右依次排布,這就是完全二叉樹

(2)滿二叉樹——除了葉結點外每一個結點都有左右子葉且葉子結點都處在最底層的二叉樹。

(3)平衡二叉樹——平衡二叉樹又被稱為AVL樹(區別於AVL演算法),它是一棵二叉排序樹,且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹