資料結構 樹

2021-09-28 20:33:08 字數 1652 閱讀 5456

樹是n(n>=0)個結點的有限集合,當n=0時稱為空樹。在任一非空樹(n>0)中,有且僅有乙個稱為根的結點;其餘結點可分為m(m>=0)個互不相交的有限子集t1,t2…,tm, 其中,每個ti又是一顆樹,並且稱為根結點的子樹;樹的定義是遞迴的,它表明了樹本身的固有特性,也就是一棵樹由若干棵子樹構成,而子樹又由更小的子樹構成。

孩子:結點的子樹的根稱為該結點的孩子;

雙親:該結點稱為其子結點的雙親;

兄弟:具有相同雙親的結點互為兄弟;

結點的度:乙個結點的子樹的個數記為該結點的度;

葉子結點:也稱為終端結點,度為0的結點;

結點的層次:根為第一層,根的孩子為第二層,依次類推;

樹的高度:一棵樹的最大層數記為樹的高度(或深度);

1)二叉樹的性質①二叉樹第i層(i>=1)上最多有

②高度為k的二叉樹最多有

③對於任何一顆二叉樹,若終端結點個數為n0,度為2的結點個數為n2,則n0=n2+1

2)滿二叉樹:深度為k的二叉樹有

3)完全二叉樹:約定編號從根結點起,自上而下、自左至右依次進行,對於深度為

k的,有

n個結點的二叉樹,當且僅當其每乙個結點都與深度為

k的滿二叉樹中編號從1至

n的結點一一對應時稱之為完全二叉樹。

4)二叉樹的儲存結構

①順序儲存結構

順序儲存是用一組位址連續的儲存單元儲存二叉樹中結點,必須把結點排成乙個適當的線性序列;完全二叉樹採用順序儲存結構既簡單又節省空間,對於一般的二叉樹並不適合用順序儲存結構。因為一般的二叉樹也必須按照完全二叉樹的形式儲存,新增一些並不存在的「虛結點」,造成空間浪費。

②鏈式儲存結構

5)二叉樹的遍歷

①前序遍歷

typedef struct bitnode

bitnode,*bitree;

//前序遍歷

void preorder(bitree root)

}

②中序遍歷

//中序遍歷

void inorder(bitree root)

}

③後序遍歷

//後序遍歷

前序遍歷順序:421356

中序遍歷順序:123456

後序遍歷順序:132654

資料結構 樹

樹的概念 1.家族樹 在現實生活中,有入如下血統關係的家族可用樹形圖表示 張源有三個孩子張明 張亮和張麗 張明有兩個孩子張林和張維 張亮有三個孩子張平 張華和張群 張平有兩個孩子張晶和張磊。以上表示很像一棵倒畫的樹。其中 樹根 是張源,樹的 分支點 是張明 張亮和張平,該家族的其餘成員均是 樹葉 而...

資料結構 樹

1 定義 樹是一種非線性結構,是一種一對多的資料結構。分析樹的結構,我們用遞迴的方法,根結點下面又可以看做是子樹。2 樹的儲存結構 我們一般用孩子兄弟法儲存。也就是把乙個結點的左邊第乙個孩子放在此結點的左邊孩子,把此結點的右兄弟放在此結點的右邊孩子。這樣就產生了二叉樹。二叉樹和樹可以相互對應。3 二...

資料結構 樹

二叉樹性質回顧 滿二叉樹 完全二叉樹等 給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。層序遍歷 並分層列印 如果不用分層的話只用佇列...