#include<
iostream
>
#include
<
iomanip
>
#include
<
cmath
>
using
namespace
std;
typedef
struct
treenode
treenode,
*treep;
intlow=1
,high=10
;char*r;
int*
weight;
int*
sw;//
初始化二叉樹
void
init_tree(treep
&root)
//建立二叉樹
void
secondoptimal(treep
&rt,
char
r,int
sw,
intlow,
inthigh)}rt
=(treep)malloc(
sizeof
(treenode));
rt->
data
=r[i];
//生成節點
if(i
==low)
//左子樹為空
rt->
left
=null;
else
//構造左子樹
secondoptimal(rt
->
left, r, sw, low, i-1
);if
(i==
high)
//右子樹為空
rt->
right
=null;
else
//構造右子樹
secondoptimal(rt
->
right, r, sw, i+1
, high);}//
secondoptimal
//前序遍歷二叉樹
void
pre_order(treep
&rt)}//
查詢二叉樹中是否存在某元素
intseach_tree(treep
&rt,
char
key)
else}}
intmain()
cout
<<
"構造次優查詢樹的點累積權值sw:
"<<
endl;
for(i
=low-1
; i<
high; i++)
cout
<<
setw(3)
<<
sw[i]
<<""
;cout
<<
endl;
//建立二叉樹
secondoptimal(root, r, sw, low, high-1
);//
前序遍歷二叉樹
cout
<<
endl
<<
"前序遍歷序列是:
"<<
endl;
pre_order(root);
cout
<<
endl;
//查詢二叉樹中是否存在某元素
cout
<<
"輸入要查詢的元素!
"<<
endl;
char
ch;cin
>>
ch;if
(seach_tree(root,ch)==1
)cout
<<
"yes!
"<<
endl;
else
cout
<<
"no!
"<<
endl;
return0;
}
構造次優查詢樹
似乎有些錯誤,但是錯在哪了呢?include include using namespace std const int num 9 int value num float weight num float sum weight num void init sum weight struct tre...
構造次優查詢樹的演算法
根據書上的例子寫出的演算法 儲存待查詢的內容的結構體元素 typedef struct elemkey stru elemkey 求元素low到元素high的權值和 int sumkey elemkey elemkey,int low,int high return sum 構造次優查詢樹 void...
資料結構 查詢番外篇 靜態數表的查詢 次優查詢樹
二分查詢對於等概率的查詢的效能是最優的,但是如果我們對於 資料查詢的概率不相等時,顯而易見簡單再用二分查詢不一定能得到最高的效率。如果只考慮查詢成功的情況,則使查詢效能達最佳的判定樹是其帶權內路徑長度之和ph值 ph w1h1 w2h2 wnhn 取最小值的二叉樹。這種二叉樹稱為靜態最優查詢樹。找到...