掌握二叉樹鏈式儲存結構定義及其基本操作;
學會用遞迴方法編寫對二叉樹這種遞迴資料結構進行處理的演算法;
熟悉二叉樹的典型應用,掌握哈夫曼樹的構造思想、構造演算法以及進行哈夫曼編碼。
建立乙個二叉樹,並能分別利用先序、中序、後序、層次四種不同的遍歷方法輸出結點元素。
給定權值,構造哈夫曼樹並進行編碼。
#include
#include
#define maxsize 100
typedef
struct node
btnode;
//建立二叉樹
void
createbtree
(btnode *
&b,char
*str)}}
j++;//繼續掃瞄str
ch = str[j];}
}//先序遍歷
void
preorder
(btnode *b)
}//中序輸出
void
inorder
(btnode *b)
}//後序輸出
void
postorder
(btnode *b)
}//層次輸出
//構造哈夫曼樹,生成哈夫曼編碼
void
createht
(htnode ht[
], hcode hcd,
int n)
else}}
ht[x1]
.parent = n + i;
ht[x2]
.parent = n + i;
ht[x1]
.flag =1;
ht[x2]
.flag =1;
ht[n + i]
.weight = ht[x1]
.weight + ht[x2]
.weight;
ht[n + i]
.lchild = x1;
ht[n + i]
.rchild = x2;
}for
(i =
0; i < n; i++
)//生成哈夫曼編碼
for(j = cd.start +
1; j < n; j++)}
}//哈夫曼樹結點初始化
void
initht
(htnode ht[
], hcode hcd,
int n)
printf
("輸入每個葉子結點的值:");
for(i =
0; i < n; i++
)printf
("輸入對應結點權值:");
for(i =
0; i < n; i++)}
//輸出哈夫曼編碼
由於部分**我自己還不理解,在這兒暫時不做過多解釋
資料結構 二叉樹的遍歷及應用
在二叉樹的應用中,常常要求在樹中查詢某些結點,或者對樹中的結點統一進行某種處理。因此,就提到了二叉樹的遍歷問題,對於線性結構來說,遍歷是乙個很容易解決的問題,而二叉樹偏偏是一種非線性的結構,因此需要尋找一種規律。二叉樹由三個基本單元組成,分別是根結點 左子樹及右子樹。依次遍歷這三個部分就能遍歷整個二...
資料結構 二叉樹 反轉二叉樹
include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...
C 資料結構 二叉樹操作
基本知識點不講了,直接說遍歷問題 前序遍歷 根節點 左子樹 右子樹 中序遍歷 左子樹 根節點 右子樹 後序遍歷 左子樹 右子樹 根節點 具體看 未完待續,困,明天繼續 binarytreetest.cpp 定義控制台應用程式的入口點。include stdafx.h include include ...