樹的遞迴遍歷
/*建立一棵用二叉鍊錶方式儲存的二叉樹,並對其進行遍歷(先序、中序和後序),將遍歷序列輸出到顯示器上。
【基本要求】從鍵盤輸入一棵二叉樹的先序序列,以二叉鍊錶作為儲存結構,建立二叉樹並對其進行遍歷(先序、中序和後序),然後將遍歷結果列印輸出。要求編寫遞迴和非遞迴兩種演算法來實現。
【測試資料】 輸入序列:abc**de*g**f***(其中*表示空子樹)
輸出結果:先序序列abcdegf
中序序列cbegdfa
後序序列cgefdba
*/#include
#include
#include
#define maxsize 10
typedef
char bitreedatatype;
typedef
struct node
bitree;
//二叉樹的建立
bitree *
createbitree
(bitreedatatype * tree,
int* i)
else
}//遞迴
//二叉樹的先序遍歷
void
preorder
(bitree * bit)
}//二叉樹的中序遍歷
void
inorder
(bitree * bit)
}//二叉樹的後序遍歷
void
postorder
(bitree * bit)
}//樹節點的銷毀
void
destroy
(bitree * bit)
}//遞迴的二叉樹
void
test01()
void
test02()
intmain()
樹的非遞迴遍歷:
/*建立一棵用二叉鍊錶方式儲存的二叉樹,並對其進行遍歷(先序、中序和後序),將遍歷序列輸出到顯示器上。
【基本要求】從鍵盤輸入一棵二叉樹的先序序列,以二叉鍊錶作為儲存結構,建立二叉樹並對其進行遍歷(先序、中序和後序),然後將遍歷結果列印輸出。要求編寫遞迴和非遞迴兩種演算法來實現。
【測試資料】 輸入序列:abc**de*g**f***(其中*表示空子樹)
輸出結果:先序序列abcdegf
中序序列cbegdfa
後序序列cgefdba
*/#include
#include
#include
#define maxsize 50
typedef
char bitreedatatype;
typedef
struct node
bitree;
typedef
struct stackbitree
stack;
//二叉樹的建立
bitree *
createbitree
(bitreedatatype * tree,
int* i)
else
}//初始化
void
initstack
(stack * s)
//判斷棧是否為空
intstackisempty
(stack * s)
return1;
}//入棧
void
enterbitree
(stack * s,bitree * bit)
s->top++
; s->t[s->top]
= bit;
}//棧頂元素
bitree *
gettopbitree
(stack * s)
//出棧
void
poptree
(stack * s)
//非遞迴先序
void
prebitorder
(bitree * bit, stack * s)
p =gettopbitree
(s);
poptree
(s);
p = p->right;}}
//非遞迴中序
void
inbitorder
(bitree * bit, stack * s)
p =gettopbitree
(s);
poptree
(s);
printf
("%c"
, p->data)
; p = p->right;}}
//非遞迴後序
void
postbitorder
(bitree * bit, stack * s)
p =gettopbitree
(s);
if(p->right ==
null
|| p->right == pre)
else}}
void
test01()
intmain()
樹的遍歷遞迴非遞迴
1先序 遞迴 class solution public void b list list,treenode tree 非遞迴 class solution else return list 2中序 遞迴 class solution public void b list list,treenode...
樹的遞迴和非遞迴遍歷
利用迴圈和棧實現前序 中序和後序遍歷 利用佇列實現層次遍歷 typedef struct node bitree stacks 前序遍歷 針對乙個根結點,先輸出其根結點值,再push其所有左結點,然後再彈出乙個結點取其右結點作為新的根結點。void preorder bitree t 前序遍歷的非遞...
樹的非遞迴遍歷
在vs2011版本中除錯通過。include stdafx.h include stack.h include 標準庫中定義的棧 includeusing namespace std define max len 15 void create tree treenode head,char pdat...