一、實驗目的
1、了解二叉樹的定義及基本運算。
2、掌握二叉樹的描述方法、特點、性質及儲存結構。
3、掌握二叉樹的基本操作演算法。
4、自主設計二叉樹建立、遍歷等操作的整個程式。
二、實驗內容
根據建立任意給定的二叉樹,並對此二叉樹進行前序、中序、後序、層次四種遍歷。
基本要求:
1) 具有二叉樹的建立功能;
2) 可以進行二叉樹的四種方式的遍歷,遍歷方式可由使用者選擇,遍歷結果;
3) 可統計二叉樹中葉子結點、度位2的結點個數及總結點數;
4) 可在二叉樹中查詢某一元素;
5) 通過鍵盤可以建立任意給定的二叉樹,並能完成以上操作控制。
5)自己編寫、除錯所有功能函式程式。
三、程式設計思路
用鏈式儲存結構建立乙個二叉樹,將二叉樹分為根結點、左子樹和右子樹三部分建立。
二叉樹的遍歷是指按照某種順序訪問二叉樹中的每個結點,使每個結點被訪問一次且只被訪問一次。常用的二叉樹遍歷方法如下:
前序遍歷:訪問次序:根→左→右,
中序遍歷:訪問次序:左→根→右,
後序遍歷:訪問次序:左→右→根
層次遍歷:訪問次序:從上到下、從左到右一層一層進行
可按如下格式定義二叉樹的鏈式儲存結構:
typedef char datatype;
typedef struct bitnode
bitnode,*bitree;
模組劃分:
1)void createbintree(bitree *t):以遞迴方式建立二叉樹;
2)void preorder(bitree bt)函式:前序遍歷函式;
3)void inorderout(bitree t)函式:中序遍歷函式;
4)void postorder(bitree bt)函式:後序遍歷函式;
5)void levelorder(bitree bt)函式:層次遍歷函式;
6)int allnode(bitree root)函式:計算總結點個數函式;
7)bitree search(bitree bt, datatype x)函式:查詢函式;
8)int n2(bitree bt)函式:計算度為2結點個數函式;
9)int countleaf(bitree bt)函式:計算葉子結點個數函式。
四、部分參考源程式段
#include
#include
#define maxnode 10
typedef char datatype;
typedef struct bitnode
bitnode,*bitree;
void createbintree(bitree *t) // 以遞迴方式建立二叉樹
}/*bitree createbintree(bitree t) // 以遞迴方式建立二叉樹
return(t);
}*/void preorder(bitree bt)
void inorderout(bitree t)
void postorder(bitree bt)
void levelorder(bitree bt)
if(queue[front]->rchild!=null)
rear++; queue[rear]=queue[front]->rchild; }
}}int allnode(bitree root)
bitree search(bitree bt, datatype x)
if ( bt->rchild != null)
p=search(bt->rchild,x);
if(p) return p; }
}return null;
}/*int n=0;//設計一演算法,統計二叉樹中度為2的結點總數
void n2(bitree bt )
}*/int n2(bitree bt)
int countleaf(bitree bt)
void main( )
if(sel==2)
if(sel==4)
{printf("後序為:");
postorder(bt);
printf("\n");
資料結構實驗
資訊23 2120502060 古碧野一 實驗題目 建立乙個線性表,實現線性表的建立,插入,刪除和遍歷 二.實驗目的和要求 實驗目的 熟練掌握線性表的基本操作在順序儲存結構上的實現。實驗要求 用c語言編寫源程式,並除錯通過,測試正確。三.主要儀器裝置 windows xp操作平台,visual c ...
資料結構實驗
一 實驗題目編寫乙個程式實現雙鏈隊的各種基本運算,並在此基礎上設計乙個主程式完成如下功能 1 初始化鏈隊q 2 判斷鏈隊q是否為空 3 依次進隊元素a,b,c 4 出隊乙個元素,輸出該元素 5 輸出鏈隊q的元素個數 6 依次進鏈隊元素d,e,f 7 輸出鏈隊q的元素個數 8 輸出出隊序列 9 釋放鏈...
《資料結構》實驗
資料結構與演算法 第1次實驗題目及要求 實驗一 線性表 佇列與棧及其操作演算法 一 實驗內容 1 建立包括頭結點和3個結點 4,2,1 的單鏈表,實現單鏈表建立 插入 刪除和順序查詢等基本操作。2 程式設計用一維陣列來模擬乙個棧,實現入棧和出棧操作,解決括號匹配問題。3 程式設計用一維陣列來模擬乙個...