二叉樹的遍歷實現,可以用遞迴的方法也可以用非遞迴的方法。非遞迴的方法可以借助棧(前序遍歷,中序遍歷,後序遍歷),也可以借助佇列(層次遍歷)。本次筆記只使用了遞迴的方法來進行前序遍歷,中序遍歷,後序遍歷,借助佇列進行層次遍歷。想要更細緻的看一下二叉樹的遍歷推薦
要遍歷的二叉樹如下:
中序遍歷:a/b*c-d+e
前序遍歷:+-*/abcde
後序遍歷:ab/c*d-e+
層次遍歷:+-e*d/cab
標頭檔案**
1原始檔**#ifndef _binarytree_h
2#define _binarytree_h
34 #include5 #include6
7 template class
binarytree;
89 template
10class
treenode
1118
t data;
19 treenode*leftchild;
20 treenode*rightchild;
21};
2223 template
24class
binarytree25;
4243 template
44void binarytree::levelorder()
4558}59
60 template
61void binarytree::visit(treenode*currentnode)
6265
66 template
67void binarytree::inorder()
6871
72 template
73void binarytree::inorder(treenode*currentnode)
7481}82
83 template
84void binarytree::preorder()
8588
89 template
90void binarytree::preorder(treenode*currentnode)
9198}99
100 template
101void binarytree::postorder()
102105
106 template
107void binarytree::postorder(treenode*currentnode)
108115
}116
117118
119#endif
1 #include2 #include"binarytree.h"3
4using
namespace
std;56
intmain()
7
資料結構(C實現) 遍歷二叉樹
二叉樹是另一中樹型結構,它的特點是每個結點至多只有兩棵子樹 即二叉樹中不存在度大於 的結點 並且,二叉樹的子樹有左右之分,其次序不能任意顛倒。根據二叉樹的的遞迴定義可知,二叉樹是由3個基本單元組成,根結點 左子樹和右子樹,因此,若能依次遍歷這三部分,便是遍歷了整個二叉樹。假如以l d r分別表示遍歷...
資料結構筆記 二叉樹的遍歷
二叉樹的遍歷,就是按照一定的規則訪問二叉樹,將二叉樹的非線性結構轉換為二叉樹結點的乙個線性序列 假設 l,r,v 分別代表遍歷乙個結點的左子樹,右子樹,以及訪問該結點的操作 則遍歷總共有六種規則 vlrvrl 前序 lvrrvl 中序 lrvrlv 後序 為了方便,以下演算法都採用先左後右的三種,先...
mysql 遍歷二叉樹 資料結構 二叉樹遍歷
這篇博文主要是研究二叉樹遍歷的遞迴與非遞迴演算法,有興趣的小夥伴可以了解下!二叉樹的遞迴遍歷 深度優先遍歷 先來張圖,看看各結點遍歷時的情況 二叉樹深度優先遍歷總結 分別為第一次,第二次,第三次進入某個結點 先序遍歷 先訪問根結點,然後先序遍歷左子樹,最後先序遍歷右子樹 根 左 右 中序遍歷 先中序...