Summary Day25

數據結構與算法
1. 二叉樹
1.1 相關概念
在計算機中,二叉樹是指每個節點最多隻有兩個子節點的樹形結構
其中起始節點叫做根節點,整個二叉樹只有一個根節點,除了根節點外每個數只有一個父節點
沒有任何子節點的節點叫做葉子節點,除了根節點和葉子節點外,剩下只有枝節點(只有兩個子節點)
二叉樹每層中節點鈞達到最大值爲滿二叉樹
完全二叉樹,在滿二叉樹的基礎上葉子節點不滿也靠左邊

1.2 基本特徵
二叉樹具有遞歸嵌套的空間結構,也就是說對於一顆二叉樹來說,可以拆分爲若干個小二叉樹組成
因此採用遞歸的方法處理二叉樹比較方便,
如:
處理(二叉樹)
{
if  (是空樹) 直接處理完畢;
else
{
處理根節點;
處理左子樹; =》遞歸
處理右子樹; =》遞歸
}
}

1.3二叉樹的存儲結構
(1)順序存儲結構
從上至下,從左到右一次存儲節點,對於非完全二叉樹來說採用虛擬節點來補成完全二叉樹
(2)鏈式存儲結構
一般來說,每個節點除了存儲數據元素本身之外,還需要兩個指針分別記錄左右節點的地址
如:

typedef struct Node {
int data;//數據內容
struct Node* left;//記錄左子樹
struct Node* rignt; //記錄右子樹的地址
}

1.4 基本操作
創建 、銷燬、插入新元素、刪除元素、查找指定元素、
修改指定元素、判斷二叉樹是否爲滿、判斷二叉樹是否爲空
計算二叉樹節點個數、獲取根節點的元素值、遍歷操作

1.5 二叉樹的遍歷方式
(1)先序遍歷(DLR - data left right)
先遍歷根節點,在遍歷左子樹,最後遍歷右子樹
(2)中序遍歷(LDR - left data right)
先遍歷左子樹,再遍歷遍歷根節點,最後遍歷右子樹
(3)後續遍歷(LRD - left ringht data)
先左子樹,在遍歷右字數,最後遍歷根節點

1.6 有序二叉樹(應用廣泛)
一般來說,當左子樹不爲空,則左子樹的元素值小於等於根節點;
右子樹元素值大於等於根節點,左右子樹也是有序的,滿族上述特徵的二叉樹,叫做有序二叉樹

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章