/*
*作 者:李哲
*版 本 號:v1.0
*/
1)層次遍歷演算法的驗證:實現二叉樹的層次遍歷演算法,並對用」a(b(d,e(h(j,k(l,m(,n))))),c(f,g(,i)))」建立的二叉樹進行測試。
#include #include "btree.h"
void levelorder(btnode *b)
if (p->rchild!=null) //有右孩子時將其進隊
2)二叉樹構造演算法的驗證:
3)中序線索化二叉樹的演算法驗證:
#include #include #define maxsize 100
typedef char elemtype;
typedef struct node
tbtnode;
void createtbtnode(tbtnode * &b,char *str)}}
j++;
ch=str[j];
}}void disptbtnode(tbtnode *b)
}}tbtnode *pre; //全域性變數
void thread(tbtnode *&p)
else p->ltag=0;
if (pre->rchild==null) //後繼線索
else pre->rtag=0;
pre=p;
thread(p->rchild); //右子樹線索化
}}tbtnode *creathread(tbtnode *b) //中序線索化二叉樹
4)哈夫曼編碼的演算法驗證:
#include #include #define n 50 //葉子結點數
#define m 2*n-1 //樹中結點總數
//哈夫曼樹的節點結構型別
typedef struct
htnode;
//每個節點哈夫曼編碼的結構型別
typedef struct
hcode;
//構造哈夫曼樹
void createht(htnode ht,int n)
{ int i,k,lnode,rnode;
double min1,min2;
for (i=0; i<2*n-1; i++) //所有結點的相關域置初值-1
ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
for (i=n; i<2*n-1; i++) //構造哈夫曼樹
{min1=min2=32767; //lnode和rnode為最小權重的兩個結點位置
lnode=rnode=-1;
for (k=0; k<=i-1; k++)
if (ht[k].parent==-1) //只在尚未構造二叉樹的結點中查詢
{if (ht[k].weight
第十周 專案1 二叉樹演算法庫
檔名稱 main.cpp 作者 王超 完成日期 2015年11月2日 問題描述 二叉樹演算法庫 include include btree.h int main else printf 未找到!printf n printf 4 二叉樹b的深度 d n btnodedepth b printf 5 ...
第十周專案(1) 二叉樹演算法庫
問題及 btree.h 煙台大學計算機與控制工程學院 作 者 楊甯 完成日期 2015年11月2日 問題描述 定義二叉樹的鏈式儲存結構,實現其基本運算,並完成測試。ifndef btree h included define btree h included define maxsize 100 t...
第十周專案1 二叉樹演算法庫
檔名稱 h1.cpp 完成日期 2015年11月2日 版本號 vc6.0 問題描述 定義二叉樹的鏈式儲存結構,實現其基本運算,並完成測試。輸入描述 無 程式輸出 二叉樹的運算結果。include include define maxsize 100 typedef char elemtype typ...