在二叉樹的應用中,常常要求在樹中查詢具有某種特徵的結點,或者對全部結點逐一進行某種處理。這就是二叉樹的遍歷問題。所謂二叉樹的遍歷是指按一定的規律和次序訪問樹中的各個結點,而且每個結點僅被訪問一次。「訪問」的含義很廣,可以是對結點作各種處理,如輸出結點的資訊等。遍歷一般按照從左到右的順序,共有3種遍歷方法,先(根)序遍歷,中(根)序遍歷,後(根)序遍歷。
先序:根、左、右;
中序:左、根、右;
後序:左、右、根。
若二叉樹為空,則空操作,否則
①訪問根結點
②先序遍歷左子樹
③先序遍歷右子樹
void preorder(tree bt)//先序遍歷根節點為bt的二叉樹演算法
}
棧:先進後出
void preorder(tree bt)//先序遍歷bt所指的二叉樹
if(top)//棧中所有元素出棧 } }
先序遍歷此圖的結果為:124753689
若二叉樹為空,則空操作,否則
①中序遍歷左子樹
②訪問根結點
③中序遍歷右子樹
void inorder(tree bt)//中序遍歷根節點為bt的二叉樹的遞迴演算法
中序遍歷此圖的結果為:742513869
若二叉樹為空,則空操作,否則
①後序遍歷左子樹
②後序遍歷右子樹
③訪問根結點
void posorder(tree bt)//後序遍歷根節點為bt的二叉樹的遞迴演算法
後序遍歷此圖的結果為:745289631
資料結構 二叉樹的遍歷 遞迴
二叉樹的遍歷。include include define maxsize 100 typedef char elemtype using namespace std typedef struct node btnode void createbtnode btnode b,char str 建立二...
資料結構 遞迴方式遍歷二叉樹
include include include define ok 1 define error 1 採用二叉鍊錶表示 typedef struct btnode btnode,btree 宣告函式 intinitbtree btree t 先序遍歷建立左子樹 intpre visit btree ...
mysql 遍歷二叉樹 資料結構 二叉樹遍歷
這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...