資料結構筆記 第五章

2021-09-02 01:28:47 字數 1198 閱讀 9368

一.樹的邏輯結構

樹是乙個有限的集合,集合中的元素稱為結點。

1、結點的個數為0:稱為空樹。

2、結點的個數為1:此節點稱為根節點。

3、節點的個數大於1:則除了根結點以外的結點又可分為多個集合,每乙個集合本身其實質上也是一棵樹,並且是根節點的子樹。

二.二叉樹的邏輯結構

1、二叉樹的定義

二叉樹首先必須是一棵樹,樹的每個節點的度數不大於2,並且二叉樹是有序的,分左子樹和右子樹。

2、二叉樹的五種基本形態

1)、空二叉樹(沒有乙個結點);

2)、只有乙個根節點;

3)、只有左子樹;

4)、只有右子樹;

5)、既有左子樹又有右子樹;

3、斜樹

斜樹首先是一棵二叉y樹,二叉樹的每個節點都只有左子樹稱為左斜樹,都只有右節點稱為右斜樹。斜樹的每一層都只有乙個節點,因此,結點的個數就是斜樹的深度。

4、滿二叉樹

滿二叉樹的的葉子節點都在最底層,除了葉子節點外,其餘結點都有左子樹和右子樹。滿二叉樹只有度為0和2的結點。

5、完全二叉樹

一棵二叉樹按層序編號,如果是一顆滿二叉樹,則是一顆完全二叉樹;如果某乙個結點只有一顆子樹,那麼該子樹必須是左子樹,並且該子樹的編號是最大的;其餘情況不是完全二叉樹。

三.二叉樹的儲存結構及實現

二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。

通常的方法是鍊錶中每個結點由三個域組成,資料域和左右指標域,左右指標分別用來給出該結點左孩子和右孩子所在的鏈結點的儲存位址

。四.樹,森林與二叉樹的轉換

將一棵二叉樹轉化成森林,可按如下步驟進行:

1)抹線:將二叉樹根結點與其右孩子之間的連線,以及沿著此右孩子的右鏈連續不繼搜尋到的右孩子間的連線抹掉。這樣就得到了若干棵根結點沒有右子樹的二叉樹。

2)將得到的這些二叉樹用前述方法分別轉化成一般樹。

五.哈夫曼樹

哈夫曼樹的構造

給定n個權值分別為w1, w2, …, wn的節點。構造哈夫曼樹的演算法描述如下:

1)將這n個結點分別作為n棵樹僅含乙個結點的二叉樹,構成森林f.

2)構造乙個新節點,並從f中選取兩棵根結點權值最小的樹作為新節點的左、右子樹,且將新節點的權值置為左、右子樹上根結點的權值之和。

3從f中刪除剛才選出的兩棵樹,同時將新得到的樹加入f中。

4重複步驟2和3,直至f中只剩下一棵樹為止。

資料結構筆記 第五章

雙親表示法 基本思想 用一維陣列來儲存樹的各個結點 一般 按層序儲存 陣列中的乙個元素對應樹中的乙個 結點,包括結點的資料資訊以及該結點的雙親在數 組中的下標 森林轉換為二叉樹 將森林中的每棵樹轉換成二叉樹 從第二棵二叉樹開始,依次把後一棵二叉樹的根 結點作為前一棵二叉樹根結點的右孩子,當所有二 叉...

資料結構筆記 第五章

樹的定義是採用遞迴方法 孩子 雙親 樹中某結點子樹的根結點稱為這個結點的孩子結點,這個結點稱為它孩子結點的雙親結點 兄弟 具有同乙個雙親的孩子結點互稱為兄弟。路徑 如果樹的結點序列n1,n2,nk有如下關係 結點ni是ni 1的雙親 1 idestroytree 前置條件 樹已存在 輸入 無 功能 ...

資料結構(第五章)

樹下 第一講一.堆 什麼是堆?在講堆之前,我們先看看什麼是優先佇列。優先佇列 是一種特殊的佇列,從名稱上看,優先,顧名思義,取出的元素是按照一定的優先順序出隊的,而不是元素進入佇列的先後順序。優先佇列的完全二叉樹表示 堆的兩個特性 結構性 用陣列表示的完全二叉樹。有序性 任一結點的關鍵字是其子樹所有...