/*
*檔名稱:第十周專案1 二叉樹遍歷的遞迴演算法
*作 者:葛惠文
*完成日期:2023年11月6日
*版 本 號:v1.0
可以從更多角度體會演算法,以達到逐漸掌握演算法的程度。發布博文時,
每類演算法發一篇博文,請使用你的測試資料,並展示測試結果。
(1)層次遍歷演算法的驗證 (2)二叉樹構造演算法的驗證
(3)中序線索化二叉樹的演算法驗證 (4)哈夫曼編碼的演算法驗證
*/
(1)btreee.h檔案見
演算法庫
#include #include "btree.h"
void levelorder(btnode *b)
if (p->rchild!=null) //有右孩子時將其進隊
}}int main()
(2)btreee.h檔案見
演算法庫由先序序列和中序序列構造二叉樹
#include #include #include "btree.h"
btnode *createbt1(char *pre,char *in,int n)
/*pre存放先序序列,in存放中序序列,n為二叉樹結點個數,
本演算法執行後返回構造的二叉鏈的根結點指標*/
int main()
由後序序列和中序序列構造二叉樹
#include #include #include "btree.h"
btnode *createbt2(char *post,char *in,int n)
/*post存放後序序列,in存放中序序列,n為二叉樹結點個數,
本演算法執行後返回構造的二叉鏈的根結點指標*/
int main()
(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) //中序線索化二叉樹
return root;
}void thinorder(tbtnode *tb)
p=p->rchild;
}}int main()
(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 二叉樹遍歷非遞迴演算法
二叉樹遍歷的非遞迴演算法 實現二叉樹的先序 中序 後序遍歷的非遞迴演算法,並對用 a b d,e h j,k l,m n c f,g i 建立的二叉樹進行測試。請利用二叉樹演算法庫。參考解答 btreee.h見演算法庫 include include btree.h void preorder1 b...
第十周專案2 二叉樹遍歷的遞迴演算法
all right reserved.檔名稱 test.cpp 完成日期 2015年11月9日 版本號 v1.0 問題描述 實現二叉樹的先序 中序 後序遍歷的遞迴演算法,並對用 a b d,e h j,k l,m n c f,g i 建立的二叉樹進行測試。請參考二叉樹演算法庫 include inc...
第十周專案2 二叉樹遍歷的遞迴演算法
檔名稱 第十周專案2 二叉樹遍歷的遞迴演算法.cpp 作 者 高露 完成日期 2015年11月9日 版 本 號 v1.0 問題描述 實現二叉樹的先序 中序 後序遍歷的遞迴演算法,並對用 a b d,e h j,k l,m n c f,g i 建立的二叉樹進行測試。請利用二叉樹演算法庫。輸入描述 若干...