資料結構(C實現) 遍歷二叉樹

2021-06-25 23:15:24 字數 1918 閱讀 2941

二叉樹是另一中樹型結構,它的特點是每個結點至多只有兩棵子樹(即二叉樹中不存在度大於2的結點),並且,二叉樹的子樹有左右之分,其次序不能任意顛倒。

根據二叉樹的的遞迴定義可知,二叉樹是由3個基本單元組成,根結點、左子樹和右子樹,因此,若能依次遍歷這三部分,便是遍歷了整個二叉樹。假如以l、d、r分別表示遍歷左子樹、訪問根結點和遍歷右子樹,則可能有dlr、ldr、lrd、drl、rdl、rld這6種遍歷二叉樹的方案。若限定先左後右,則只有前3種情況,分別稱為先序遍歷、中序遍歷和後序遍歷,另外,還有一種遍歷方法,即從上到下,從左到右依次遍歷二叉樹的每個結點,稱之為層次遍歷。 故,共有4種遍歷二叉樹的方法。

1. 先序遍歷二叉樹的操作定義:

若二叉樹為空,則空操作;否則

1) 訪問根結點

2) 先序遍歷左子樹

3) 先序遍歷右子樹

2. 中序遍歷二叉樹的操作定義:

若二叉樹為空,則空操作;否則

1) 中序遍歷左子樹

2) 訪問根結點

3) 中序遍歷右子樹

3. 後序遍歷二叉樹的操作定義:

若二叉樹為空,則空操作;否則

1) 後序遍歷左子樹

2) 後序遍歷右子樹

3) 訪問根結點

4. 層次遍歷二叉樹的操作定義:

若二叉樹為空,則空操作;否則

1) 從上到下

2) 同一層,從左到右依次遍歷

1. 順序儲存結構:         

#define max_tree_size 100

typedef char telemtype;

typedef telemtype sqbitree[max_tree_size];

sqbitree bt;

2. 鏈式儲存結構:

//二叉樹的的

#define maxsize 100 //二叉樹中最多的結點數 

typedef char telemtype;

typedef struct bitnodebitnode,*bitree;

#include #include //二叉樹的的

#define maxsize 100 //二叉樹中最多的結點數 

typedef char telemtype;

typedef struct bitnodebitnode,*bitree;

//定義函式指標

typedef void(* visit)(bitree);

//二叉樹的初始化

void init_bitree(bitree *t)

//判斷二叉樹是否為空,返回1

int isempty_bitree(bitree *t)

//建立二叉樹

void create_bitree(bitree *t)

}//輸出結點的值

void print_bitreenode(bitree t)

//先序遍歷二叉樹

void preorder_bitree(bitree t,visit visit)

}//中序遍歷二叉樹

void inorder_bitree(bitree t,visit visit)

}//後序遍歷二叉樹 

void postorder_bitree(bitree t,visit visit)

}//層次遍歷二叉樹 

void levelorder_bitree(bitree t,visit visit) }}

int main()

給定二叉樹,如,輸入1247###5#8##36###

mysql 遍歷二叉樹 資料結構 二叉樹遍歷

這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...

資料結構 遍歷二叉樹

資料結構實驗之二叉樹二 遍歷二叉樹 time limit 1000ms memory limit 65536kb submit statistic problem description 已知二叉樹的乙個按先序遍歷輸入的字串行,如abc,de,g,f,其中,表示空結點 請建立二叉樹並按中序和後序的方...

資料結構 遍歷二叉樹

二叉樹的遍歷原理 二叉樹的遍歷是指從根節點出發,按照某種次序以此訪問二叉樹所有節點,使得每個節點被訪問一次且僅被訪問一次 二叉樹遍歷方法 1.前序遍歷 規則是若二叉樹為空,則空操作返回,否則先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹 2.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...