資料結構第十周專案1 二叉樹演算法驗證

2021-08-10 16:51:16 字數 1856 閱讀 3217

/*

*作 者:李哲

*版 本 號: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...