二叉樹是另一中樹型結構,它的特點是每個結點至多只有兩棵子樹(即二叉樹中不存在度大於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.中序遍歷 規則是若樹為空,則空操作返回,否則從根節點開...