Ex 6 20 最優二叉搜尋樹 第六次作業

2022-03-20 10:31:29 字數 2000 閱讀 2532

假設關鍵字的總數為n,用c[i,j]表示第i個關鍵字到第j個關鍵字的最優二叉查詢樹的代價,我們的目標是求c[0,n-1]。要求c[i,j],首先要從第i個關鍵字到第j個關鍵字中選乙個出來作為根結點,選出根結點後,最優二叉搜尋樹的代價為左子樹的代價加上右子樹的代價,由於每選出乙個根結點,每個關鍵字的搜尋長度都增加1,因此得出遞推式,即當

i到j之間的二叉搜尋樹的根結點

10optimalbst(w,roots);

1112

for(int i=0;i)

16system.out.println();17}

1819 printroot(words, roots,0,w.length-1);

20/*

21最少平均比較次數為:2.18

220 1 1 1 1 1 1

230 1 1 1 1 1 4

240 0 2 2 4 4 6

250 0 0 3 4 4 6

260 0 0 0 4 4 6

270 0 0 0 0 5 6

280 0 0 0 0 0 6

29begin和while的根結點為 do

30begin和begin的根結點為 begin

31else和while的根結點為 while

32else和then的根結點為 if

33else和end的根結點為 else

34end和end的根結點為 end

35then和then的根結點為 then

36*/37}

3839

//roots中存放i到j之間的二叉搜尋樹的根結點

40public

static

void optimalbst(double w,int

roots)

4849

for(int s=2;s<=w.length;s++)

65 }//366

double sum=0;

67for(int t=i;t<=j;t++)

70 c[i][j]=min+sum;

71 }//

272 }//

173 system.out.println("最少平均比較次數為:"+c[0][w.length-1]);74}

7576

//列印最優根

77public

static

void printroot(string words,int roots,int i,int

j)84

}85 }

view code

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 homework 11430 這個作業的目標 理解建樹過程 學號2018204299 一 實驗目的 1 掌握二叉樹的基本特性 2 掌握二叉樹的先序 中序 後序的遞迴遍歷演算法 3 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法 4 通過求二叉樹的深度 葉子結點數...

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 homework 11430 這個作業的目標 掌握二叉樹的基本特性,掌握二叉樹的先序 中序 後序的遞迴遍歷演算法,理解二叉樹的先序 中序 後序的非遞迴遍歷演算法,通過求二叉樹的深度 葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 學號 2018204195 ...

第六次作業 二叉樹

這個作業屬於哪個課程 這個作業要求在 這個作業的目標 掌握二叉樹的基本特性 二叉樹的先序 中序 後序的遞迴遍歷演算法 理解二叉樹的先序 中序 後序的非遞迴遍歷演算法。通過求二叉樹的深度 葉子結點數和層序遍歷等演算法,理解二叉樹的基本特性 學號2018204254 一 實驗目的 1 掌握二叉樹的基本特...