資料結構 C語言 之樹

2021-09-29 18:07:20 字數 1639 閱讀 7849

所謂二叉樹就是只具有0,1,2三種度的一顆樹

前序遍歷首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左、右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。

若二叉樹為空則結束返回,否則:

(1)訪問根結點。

(2)前序遍歷左子樹。

(3)前序遍歷右子樹 。

需要注意的是:遍歷左右子樹時仍然採用前序遍歷方法。

類似的:

前序遍歷:根左右

中序遍歷:左根右

後序遍歷:左右根

層次遍歷:從上到下,從左到右

前序遍歷:a b d e c f

中序遍歷:d b e a c f

後序遍歷:d e b f c a

層次遍歷:a b c d e f

1、樹轉換為二叉樹規則:

1:兄弟結點連線在該節點的右子樹上,子節點放在左邊

2:只有一棵樹的話,根節點沒有兄弟結點,也就沒有右子樹。當不止一棵樹的時候,就是森林,先將每棵樹轉換成沒有右子樹的二叉樹,然後將樹的根節點連線在上一顆樹的根節點的右子樹上,從而森林轉換成一棵二叉樹。

1,介紹

在二叉樹的結點上加上線索的二叉樹稱為線索二叉樹,利用原來的空鏈域存放指標,指向樹中其他結點。這種指標稱為線索

2,n各結點的二叉鍊錶共有2n個鏈域,非空鏈域為n-1個,但其中的空鏈域卻有n+1個。

3,線索二叉樹可分為前序線索二叉樹、中序線索二叉樹和後序線索二叉樹三種。

2,本質

二叉樹的遍歷本質上是將乙個複雜的非線性結構轉換為線性結構,使每個結點都有了唯一前驅和後繼(第乙個結點無前驅,最後乙個結點無後繼)。對於二叉樹的乙個結點,查詢其左右子女是方便的,其前驅後繼只有在遍歷中得到。為了容易找到前驅和後繼,有兩種方法。一是在結點結構中增加向前和向後的指標,這種方法增加了儲存開銷,不可取;二是利用二叉樹的空鏈指標。

優勢(1)利用線索二叉樹進行中序遍歷時,不必採用堆疊處理,速度較一般二叉樹的遍歷速度快,且節約儲存空間。

(2)任意乙個結點都能直接找到它的前驅和後繼結點。

不足(1)結點的插入和刪除麻煩,且速度也較慢。

(2)線索子樹不能共用

線索化的實質就是將二叉鍊錶中的空指標改為指向前驅或後繼的線索。由於前驅和後繼資訊只有在遍歷該二叉樹時才能得到,所以,線索化的過程就是在遍歷的過程中修改空指標的過程。

C語言之常用資料結構

目錄 一 順序表 二 單鏈表 三 雙向鍊錶 三 順序棧 四 迴圈佇列 五 二叉樹 順序表是線性表的順序儲存,通過一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。假定線性表的元素型別為elemtype,則線性表的順序儲存型別描述為 靜態分配 defin...

C語言之資料結構 鍊錶二

struct link dellink struct link head,int data else p p next return head struct link changelink struct link head,int data,int newdata point point next ...

資料結構 樹 C語言 堆

include include typedef struct heapstruct pheap pheap為結構指標,指向這個結構 struct heapstruct typedef pheap maxheap typedef pheap minheap define maxdata 1000 de...