#include
#include
"btree.h"
#include
using
namespace std;
intmain()
else
if(q-
>rchild==
null
)else
printf
("\n(4)二叉樹深度:%d\n"
,btnodedepth
(p))
;printf
("\n(5)層次遍歷:");
dispbtnodebefore
(p);
printf
("\n(6)釋放二叉樹");
return0;
}
#define maxsize 100
typedef
char elemtype;
typedef
struct node
btnode;
typedef
struct
sqqueue;
void
initqueue
(sqqueue *
&q);
//初始化順序環形佇列
void
destroyqueue
(sqqueue *
&q);
//銷毀順序環形佇列
bool
queueempty
(sqqueue *q)
;//判斷順序環形佇列是否為空
intqueuelength
(sqqueue *q)
;//返回佇列中元素個數,也稱佇列長度
bool
enqueue
(sqqueue *
&q, btnode * e)
;//進隊
bool
dequeue
(sqqueue *
&q, btnode *
&e);
//出隊
void
createbtnode
(btnode *
&b,char
*str)
;//由str串建立二叉鏈
btnode *
findnode
(btnode *b,elemtype x)
;//返回data域為x的節點指標
btnode *
lchildnode
(btnode *p)
;//返回*p節點的左孩子節點指標
btnode *
rchildnode
(btnode *p)
;//返回*p節點的右孩子節點指標
intbtnodedepth
(btnode *b)
;//求二叉樹b的深度
void
dispbtnode
(btnode *b)
;//以括號表示法輸出二叉樹
void
destroybtnode
(btnode *
&b);
//銷毀二叉樹
void
dispbtnodebefore
(btnode *b)
;//層次遍歷
#include
#include
#include
"btree.h"
//二叉樹
void
createbtnode
(btnode *
&b,char
*str)
//由str串建立二叉鏈
else}}
j++; ch=str[j];}
}btnode *
findnode
(btnode *b,elemtype x)
//返回data域為x的節點指標
}btnode *
lchildnode
(btnode *p)
//返回*p節點的左孩子節點指標
btnode *
rchildnode
(btnode *p)
//返回*p節點的右孩子節點指標
intbtnodedepth
(btnode *b)
//求二叉樹b的深度
}void
dispbtnode
(btnode *b)
//以括號表示法輸出二叉樹}}
void
destroybtnode
(btnode *
&b)//銷毀二叉樹
}//佇列
void
initqueue
(sqqueue *
&q)//初始化順序環形佇列
void
destroyqueue
(sqqueue *
&q)//銷毀順序環形佇列
bool
queueempty
(sqqueue *q)
//判斷順序環形佇列是否為空
intqueuelength
(sqqueue *q)
//返回佇列中元素個數,也稱佇列長度
bool
enqueue
(sqqueue *
&q, btnode * e)
//進隊
bool
dequeue
(sqqueue *
&q, btnode *
&e)//出隊
void
dispbtnodebefore
(btnode *b)
if(p-
>rchild!=
null)}
destroyqueue
(qu)
;}
樹的遍歷,前中後 層次遍歷非遞迴
存在記憶體洩漏,原因是沒有銷毀結點時記憶體釋放的處理.include include include include using namespace std class cbtnode typedef cbtnode btnode class cbtroot void xianxubianli1 遞...
樹的遍歷(先中後序,非遞迴,層次遍歷)
樹的遍歷分為先序遍歷,中序遍歷以及後續遍歷。其中分為遞迴形式與非遞迴形式,及層次遍歷。先序遍歷 首先訪問根節點,然後訪問左子樹,最後訪問右子樹。void preorder bitree t 中序遍歷 首先訪問左子樹,然後訪問根節點,最後訪問右子樹。void inorder bitree t 後序遍歷...
二叉樹的遍歷(遞迴,非遞迴,層次)
二叉樹的非遞迴遍歷 二叉樹是一種非常重要的資料結構,很多其它資料結構都是基於二叉樹的基礎演變而來的。對於二叉樹,有前序 中序以及後序三種遍歷方法。因為樹的定義本身就 是遞迴定義,因此採用遞迴的方法去實現樹的三種遍歷不僅容易理解而且 很簡潔。而對於樹的遍歷若採用非遞迴的方法,就要採用棧去模擬實現。在三...