樹和二叉樹

2021-09-29 16:44:03 字數 1957 閱讀 7244

結點的度:結點所擁有的子樹的個數。

樹的度:樹中各結點度的最大值。

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

分支結點:度不為0的結點,也稱為非終端結點。

結點所在層數:根結點的層數為1;對其餘任何結點,若某結點在第k層,則其孩子結點在第k+1層。

樹的深度:樹中所有結點的最大層數,也稱高度。

層序編號:將樹中結點按照從上層到下層、同層從左到右的次序依次給他們編以從1開始的連續自然數。

有序樹、無序樹:如果一棵樹中結點的各子樹從左到右是有次序的,稱這棵樹為有序樹;反之,稱為無序樹。

森林:m (m≥0)棵互不相交的樹的集合。

同構:對兩棵樹,若通過對結點適當地重新命名,就可以使這兩棵樹完全相等(結點對應相等,結點對應關係也相等),則稱這兩棵樹同構。

前序遍歷:若樹為空,不進行遍歷;否則⑴ 訪問根結點;⑵ 按照從左到右的順序前序遍歷根結點的每一棵子樹。

後序遍歷:若樹為空,則遍歷結束;否則⑴ 按照從左到右的順序後序遍歷根結點的每一棵子樹;⑵ 訪問根結點。

層序遍歷:從樹的第一層(即根結點)開始,自上而下逐層遍歷,在同一層中,按從左到右的順序對結點逐個訪問。

1.雙親表示法

(1)基本思想:用一維陣列來儲存樹的各個結點(一般按層序儲存),陣列中的乙個元素對應樹中的乙個結點,每個結點記錄兩類資訊:結點的資料資訊以及該結點的雙親在陣列中的下標。

data:儲存樹中結點的資料資訊

parent:儲存該結點的雙親在陣列中的下標 

(2)實現: 

template struct node ;
2.孩子表示法(多重鍊錶表示法)基本思想:鍊錶中的每個結點包括乙個資料域和多個指標域,每個指標域指向該結點的乙個孩子結點。

指標域的個數等於樹的度

指標域的個數等於該結點的度

data:資料域,存放該結點的資料資訊;

child1~childd:指標域,指向該結點的孩子 

data:資料域,存放該結點的資料資訊;

degree:度域,存放該結點的度;

child1~childd:指標域,指向該結點的孩子。 

孩子節點:

struct ctnode

;

表頭結點:

template struct cbnode

;

3.孩子兄弟表示法因為某結點的第乙個孩子和右兄弟右兄弟是唯一的,可以設定兩個分別指向該結點的第乙個孩子和右兄弟的指標 。

data:資料域,儲存該結點的資料資訊;

firstchild:指標域,指向該結點第乙個孩子;

rightsib:指標域,指向該結點的右兄弟結點。 

**:

template   struct tnode;

二叉樹 滿二叉樹和完全二叉樹

二叉樹是一種很重要的非線性資料結構,它是樹結構的一種重要的型別 它不是樹結構的特殊情況 其特徵是每個節點最多有兩個子樹。二叉樹的特點 二叉樹每個結點最多有 2個子結點,樹則無此限制 二叉樹中 結點的子樹 分成左子樹和右子樹,即使某結點只有一棵子樹,也要指明該子樹是左子樹,還是右子樹,就是說 二叉樹是...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹和完全二叉樹

二叉樹規律 假設根節點的高度為0 二叉樹是每個節點至多只有兩個節點的樹 深度為i所在的層至多有 2 i個節點 高度為k的二叉樹至多有2 k 1 1個節點 n0表示度為0的節點,n2表示度為2的節點,存在n0 n2 1 對所有樹有 節點個數 邊數 1 完全二叉樹規律 節點數為n的完全二叉樹,其高度為 ...