先序建立二叉樹,#表示空結點。
使用棧,實現非遞迴先序遍歷和中序遍歷。
使用佇列實現層次遍歷。
直接上**,寒假完善注釋,甚至從頭到尾把《資料結構與演算法》的相關**寫一遍。
#include
#include
#include
#include
using namespace std;
typedef
char datatype;
#define maxsize 100
typedef
struct node
bitreenode,
*bitree;
//先序建立二叉樹
void
createbitree
(bitree &root)
else
}//遞迴實現先序遍歷
void
preorder
(bitree root)
}//遞迴實現中序遍歷
void
inorder
(bitree root)
}//遞迴實現後序遍歷
void
postorder
(bitree root)
}//非遞迴實現先序遍歷
void
nonpreorder
(bitree root)
}//非遞迴實現中序遍歷
void
noninorder
(bitree root)
if(top!=-1
)}}//佇列實現層次遍歷
void
levelorder
(bitree root)
}//求二叉樹的深度
intdepth
(bitree root)
intmax
(int a,
int b)
//求葉子結點的數量
intleafcount
(bitree root)
//求度為1的結點的數量
intdegreeonecount
(bitree root)
//求度為2的結點的數量
intdegreetwocount
(bitree root)
//測試序列:abd##e##cf###
intmain()
中序遍歷(非遞迴)
前序遍歷 前序遍歷的遞迴實現 void preorder bintree root 非遞迴實現 根據前序遍歷訪問的順序,優先訪問根節點,然後再分別訪問左孩子和右孩子。即對於任一節點,其可看做是根節點,因此可以直接訪問,訪問完之後,若其左孩子 不為空,按相同規則訪問它的左子樹,當訪問其左子樹時,在訪問...
問題 C DS 6 3 非遞迴先序和中序遍歷
時間限制 15 sec 記憶體限制 128 mb 提交 774 解決 571 從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。採取非遞迴方法輸出這棵二叉樹的先序 中序遍歷序列。abc de g f abcdegf cbegdfa include include define max ...
二叉樹的先序,中序,後序遍歷(非遞迴)和層序遍歷
先序遍歷 void btreeprevordernonr btnode root top stacktop s stackpop s cur top right printf n 首先建立乙個棧結構,用於儲存二叉樹的結點。開始遍歷二叉樹,當當前結點或者棧不為空的時候,表示遍歷沒有結束,輸出當前結點 ...