使用二叉樹的鏈式儲存結構,建立一棵二叉樹,進行前序、中序以及後序遍歷,同時求得二叉樹的結點個數以及葉子結點個數。
程式源**:
# ifndef bitree_h
# define bitree_h
struct binode
char data;
binode *lchild,*rchild;
class bitree
public:
bitree()
~bitree()
void preorder()
void inorder()
void postorder()
void count()
void countleaf()
private:
binode *root;
binode *creat(binode *bt);
void release(binode *bt);
void preorder(binode *bt);
void inorder(binode *bt);
void postorder(binode *bt);
void count(binode *bt);
void countleaf(binode *bt);
# endif
# include
using namespace std;
# include"bitree.h"
int count=0;
binode *bitree::creat(binode *bt)
char ch;
cout<
"<
cin>>ch;
if(ch=='#') return null;
else
bt=new binode;
bt->data=ch;
bt->lchild=creat(bt->lchild);
bt->rchild=creat(bt->rchild);
return bt;
void bitree::release(binode *bt)
if(bt!=null)
release(bt->lchild);
release(bt->rchild);
delete bt;
void bitree::preorder(binode *bt)
if(bt==null) return;
else
cout
preorder(bt->lchild);
preorder(bt->rchild);
void bitree::inorder(binode *bt)
if(bt==null) return;
else
inorder(bt->lchild);
cout
inorder(bt->rchild);
void bitree::postorder(binode *bt)
if(bt==null) return;
else
postorder(bt->lchild);
postorder(bt->rchild);
cout
void bitree::count(binode *bt)
if(bt!=null)
count(bt->lchild);
count++;
count(bt->rchild);
cout
if(bt->lchild==null&&bt->rchild==null)
count++;
countleaf(bt->lchild);
countleaf(bt->rchild);
cout
using namespace std;
# include"bitree.h"
int main()
bitree t;
cout<
"<
t.preorder();
cout
"<
t.inorder();
cout
"<
t.postorder();
cout
"<
t.count();
cout
"<
t.countleaf();
cout
程式結果:
實驗五 樹和二叉樹實驗
三 實驗內容 1.自己設計乙個二叉樹,深度最少為4,請遞迴演算法分別用前序 中序 後序遍歷輸出樹結點。ifndef tree h define tree h struct binode class tree tree void preorder private binode root binode ...
實驗五 樹和二叉樹實驗
資料結構 實驗五 樹和二叉樹實驗 1.回樹和二叉樹的邏輯結構和儲存方法,清楚掌握樹和二叉樹的遍歷操作。2.學習樹的相關知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗內容 1.自己設計乙個二叉樹,深度最少為4,請遞迴演算法分別用前序 中序 後序遍歷輸出樹結點。源程...
實驗 5 樹和二叉樹的實驗 2
1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 1 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用鏈式儲存 結構方法儲存。實現樹的構造,並完成 1 用前序遍歷 中序遍歷 後序遍歷輸出結點資料 2 以合理...