資料結構與演算法2011 9 4

2022-04-29 08:00:09 字數 1770 閱讀 4918

線性表:

1.順序表(記憶體順序排列)

2.鍊錶

(記憶體離散排列,通過指標連線)

鍊錶:1.

單鏈表(資料域,指標域)

2.迴圈列表(最後乙個指標域的指標指向第乙個節點)

3.雙鏈表(有兩個指標域)

單鏈表的操作:

1.刪除乙個結點(

next

指標)(

next

指標)2.

插入乙個結點(先連再斷)

雙鏈表的操作:

1.刪除乙個結點

2.插入乙個結點(先將新結點的前後指標指向要連線的節點,在將原來節點的指標指向新結點)

棧(先進後出)

佇列(先進先出)

迴圈佇列

(沒有最後乙個空間

)1.為空時,

head=tail;

2.滿時,

head=tail+1

;樹和二叉樹

(層樹從

0層開始,部分是從

1層開始的)

1.葉子節點

2.分支結點(包括根結點)

3.內部結點(比分子節點少個根結點)

4.n=k+1(n:

節結點;

k:總的度數

)樹的遍歷

1.前序遍歷(根到葉)

2.後序遍歷

(葉到根)

3.層次遍歷(按層次,從左到右)

二叉樹(

左結點,又結點)1.

滿二叉樹(所有結點都有,是完全二叉樹)

2.完全二叉樹(

n-1層是滿二叉樹,最後一層從左到右排列)

二叉樹的重要性:

1.在二叉樹的第

i層做多有

2^i次;(從

0層開始)

2.深度為

k的二叉樹最多有2^(

k+1)

-1次;

3.對任何一顆二叉樹,如果葉子結點數為

n0,度為

2的節點數為

n2,則

n0=n2+1;

二叉樹遍歷

1.前序遍歷

2.中序遍歷

3.後序遍歷

4.層次遍歷

查詢二叉排序樹

一棵查詢二叉樹,要麼是空,要麼滿足以下條件:

1.左右子樹是查詢二叉樹

2.若左子樹非空,則左子樹的各個結點上的值都小於根結點的值;

3.若右子樹非空,則右子樹的各個結點上的值都大於根結點的值;

二叉排序樹插入結點

1.如果存在相同結點,怎不允許插入

2.如果,二叉排序樹為空,則新結點我二叉排序樹;

3.插入的鍵值與父結點比較,確定是放在左子樹還是右子樹;

二叉排序樹刪除結點

1.如果是葉子結點,直接刪除;

2.如果要刪除的結點只有左子樹,則刪除該結點,並將左子樹上移到它的位子;

3.如果要刪除的結點存在左子樹和右子樹,則刪除該結點,並用中序遍歷找出子樹中的最大的結點

s,並用最大的結點

s代替該節點,然後刪除s; 

最優二叉樹(哈夫曼樹)

樹的帶權路徑長度最短

如何構造最優二叉樹:選兩個全最小的構成一棵樹,得出新的權,重複前面的操作,知道全部結束

哈夫曼編碼:左為

0,右為

1如何將二叉樹改為線索二叉樹

:先寫出二叉樹的前序遍歷、中序遍歷、後序遍歷,然後找出他的前驅和後續節點。

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...

資料結構 資料結構與演算法01

1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...

資料結構 資料結構與演算法02

1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...