演算法與資料結構學習(33) 樹結構(基礎)

2021-10-03 15:03:15 字數 2638 閱讀 9767

1.陣列儲存方式的分析優點:通過下標方式訪問元素,速度快。對於有序陣列,還可使用二分查詢提高檢索速度。缺點:如果要檢索具體某個值,或者插入值(按一定順序)會整體移動,效率較低 [示意圖]

2.鏈式儲存方式的分析優點:在一定程度上對陣列儲存方式有優化(比如:插入乙個數值節點,只需要將插入節點,鏈結到鍊錶中即可, 刪除效率也很好)。缺點:在進行檢索時,效率仍然較低,比如(檢索某個值,需要從頭節點開始遍歷)

3.樹儲存方式的分析能提高資料儲存,讀取的效率, 比如利用 二叉排序樹(binary sort tree),既可以保證資料的檢索速度,同時也可以保證資料的插入,刪除,修改的速度。

樹的常用術語(結合示意圖理解):節點

根節點父節點

子節點葉子節點 (沒有子節點的節點)

節點的權(節點值)

路徑(從root節點找到該節點的路線)層子樹

樹的高度(最大層數)

森林 :多顆子樹構成森林

1.樹有很多種,每個節點最多只能有兩個子節點的一種形式稱為二叉樹。

2.二叉樹的子節點分為左節點和右節點。

3.如果該二叉樹的所有葉子節點都在最後一層,並且結點總數= 2^n -1 , n 為層數,則我們稱為滿二叉樹。

4.如果該二叉樹的所有葉子節點都在最後一層或者倒數第二層,而且最後一層的葉子節點在左邊連續,倒數第二層的葉子節點在右邊連續,我們稱為完全二叉樹。

二叉樹遍歷的說明

前序遍歷: 先輸出父節點,再遍歷左子樹和右子樹

中序遍歷: 先遍歷左子樹,再輸出父節點,再遍歷右子樹

後序遍歷: 先遍歷左子樹,再遍歷右子樹,最後輸出父節點

小結: 看輸出父節點的順序,就確定是前序,中序還是後序

分析二叉樹的前序、中序、後序遍歷

1.建立二叉樹

2.前序遍歷

2.1先輸出當前結點(初始的時候是root結點)

2.2如果左子節點不為空,則繼續遞迴前序遍歷

2.3如果右子節點不為空,則繼續遞迴前序遍歷

3.中序遍歷

3.1如果當前的左子節點不為空,則遞迴中序遍歷,

3.2輸出當前結點

3.3如果當前結點的右子節點不為空,則遞迴中序遍歷

4.後序遍歷

4.1如果當前的左子節點不為空,則遞迴後序遍歷,

4.2如果當前的右子節點不為空,則遞迴後序遍歷,

4.3輸出當前結點

package tree;

public class binarytreedemo

}//定義乙個二叉樹

class binarttree

//前序遍歷

public void preorder() else }

//中序遍歷

public void infixorder() else }

//後序遍歷

public void postorder() else }}

//先建立heronode結點

class heronode

public int getno()

public void setno(int no)

public string getname()

public void setname(string name)

public heronode getleft()

public void setleft(heronode left)

public heronode getright()

public void setright(heronode right)

@override

public string tostring()

//編寫前序遍歷方法

public void preorder()

//遞迴向右子樹序遍遍歷

if(this.right !=null) }

//中序遍歷

public void infixorder()

//輸出父節點

system.out.println(this);

//遞迴向右子樹中序遍歷

if(this.right !=null) }

//後序遍歷

public void postorder()

// 遞迴向右子樹後序遍歷

if (this.right != null)

// 輸出父節點

演算法與資料結構學習(39) 樹結構的實際應用

1.堆排序是利用堆這種資料結構而設計的一種排序演算法,堆排序是一種選擇排序,它的最壞,最好,平均時間複雜度均為o nlogn 它也是不穩定排序。2.堆是具有以下性質的完全二叉樹 每個結點的值都大於或等於其左右孩子結點的值,稱為大頂堆,注意 沒有要求結點的左孩子的值和右孩子的值的大小關係。3.每個結點...

資料結構學習筆記 2 資料結構與演算法

四.演算法設計的要求 五.演算法效率的度量方法 六.函式的漸近增長 七.演算法時間複雜度 八.常見的時間複雜度 九.最壞情況與平均情況 十.演算法空間複雜度 資料結構是底層,演算法高層。資料結構為演算法提供服務。演算法圍繞資料結構操作。演算法是解決特定問題求解步驟的描述,在計算機中表現為指令的有限序...

資料結構 樹結構

樹結構以一種 一對多 的資料關係。樹的結點 結點 樹結構的每乙個元素都可以被稱為乙個節點。父結點 a結點是b,c的父結點 子結點 b,c是a的子結點 根結點 a是樹的根結點,每乙個非空的樹結構中只有乙個根結點 q 如何判斷某個結點是否是根結點?a 根結點沒有父節點 葉子結點 d,e,f是葉子結點,葉...