資料結構樹

2021-10-01 14:35:34 字數 1716 閱讀 4994

專業定義:

1、有且只有乙個稱為根的節點

2、有若干互不相交的子樹,這些子樹本身也是一顆樹

通俗定義:

1、樹由節點和邊組成

2、每乙個節點只有乙個父節點,但可由多個字節點

3、沒父節點的是根節點

1、一般樹

2、二叉樹:一般二叉樹、滿二叉樹(滿了,在不增加層次的條件下不能在多乙個節點了)、完全二叉樹(完全按照從上到下,從左到右的樹)。

3、森林:n個互補相交的樹的結合

(1)連續儲存:必須構造出完全二叉樹(以陣列來儲存)

(2)鏈式儲存:先序、中序、後序

(3)一般樹的儲存:雙親表示法、孩子表示法、雙親孩子表示法、

二叉樹表示法:把普通樹轉換為二叉樹,只要左指標域指向他的第乙個孩子,右指標域指向他的兄弟,就可以實現轉換。(樹都可以實現轉換,但構造的二叉樹一定沒有右子樹)

(4)森林的儲存:轉換成二叉樹來儲存,可能有右子樹

1、樹的遍歷(把非線性的樹轉換成線性的序列)

(1)先序遍歷(先根節點)

先訪問根節點、在訪問左子樹、在訪問右子樹。

(2)中序遍歷(中間訪問根節點)

先訪問左子樹、再根節點,再右子樹

(3)後序遍歷(最後訪問根節點)

先左子樹,再右子樹,再根節點

2、已知兩種遍歷序列求原始二叉樹(根據根再中序中的位置,來判斷左子數和右子樹來還原)

(1)只有通過先序和中序,或中序和後序才能還原二叉樹,通過先序和後序不能還原。

(2)通過先序和中序:通過先序首先判斷根,根再中序中把樹分為了左子樹和右子樹。

(3)通過中序和後序:從後序來判斷哪個是根,即把後序倒著來

樹是資料庫中資料組織一種重要的形式、作業系統父程序關係本身就是一顆樹、物件導向中類的繼承關係
1、靜態建立樹

`//定義乙個節點的結構

class tree;

//建立樹

tree* pa=new tree;

tree* pb=new tree;

tree* pc=new tree;

tree* pd=new tree;

pa->data='a';

pb->data='b';

pc->data='c';

pd->data='d';

pa->leftchild=pb;

pa->rightchild=pc;

pb->leftchild=pd;

pb->rightchild=null;

pd->leftchild=pd->rightchild=pc->leftchild=pc->rightchild=null;

return pa;//知道一顆樹的根節點即可知道整個樹,所有返回 根節點即可

`2、遍歷樹

`//先序遍歷樹

void pre_show(tree* t)

if(t->rightchild!=null)

}}//中序遍歷

void mid_show(tree* t)

cout} //後序遍歷

void last_show(tree* t)

if(t->rightchild!=null)

cout} `

資料結構 樹

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

資料結構 樹

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

資料結構 樹

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