freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

樹(shù)的定義和基本術(shù)語(yǔ)二叉樹(shù)binarytree二叉樹(shù)的存儲(chǔ)結(jié)(參考版)

2025-07-22 20:10本頁(yè)面
  

【正文】 } free(cd)。cd[start])。 HC[i]=(char *)malloc((nstart)*sizeof(char))。 else cd[start]=39。 c=f,f=HT[f].parent) if (HT[f].lchild ==c) cd[start]=39。 for (c=i,f=HT[c].parent。i=n。\039。 cd = (char*)malloc(n*sizeof(char))。 HT[i].weight = HT[s1].weight + HT[s2].weight。 HT[i].lchild = s1。 HT[s1].parent=i。 i=m。 } //*p={ 0,0,0,0 }。 plchild=0。++i,++p) { pweight = 0。 for (。prchild=0。 pparent=0。 i=n。 HT = (HuffmanTree)malloc((m+1)*sizeof(HTNode))。 if (n=1) return。 int i,s1,s2,start。HC,int *w, int n) { HuffmanTree p。 void HuffmanCoding(HuffmanTree amp。 } HTNode, *HuffmanTree。 赫夫曼編碼樹(shù) typedef struct { unsigned int weight。 赫夫曼編碼是一種 無(wú) 前綴的編碼 。比等長(zhǎng)編碼的情形要短。左分支賦 0,右分支賦 1,得赫夫曼編碼 (變長(zhǎng)編碼 )。 因各字符出現(xiàn)的概率為 { 2/18, 7/18, 4/18, 5/18}。 設(shè)給出一段報(bào)文: CAST CAST SAT AT A TASA 字符集合是 { C, A, S, T },各個(gè)字符出現(xiàn)的頻度 (次數(shù) )是 W= { 2, 7, 4, 5 }。 ③ 把新的二叉樹(shù)加入 F。置新的二叉樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)上根結(jié)點(diǎn)的權(quán)值之和。 p146 赫夫曼算法 —— 如何構(gòu)造一棵赫夫曼樹(shù) (1) 由給定的 n個(gè)權(quán)值 {w0, w1, w2, …, wn1},構(gòu)造具有 n棵二叉樹(shù)的森林 F = {T0, T1, T2, …, Tn1},其中每一棵二叉樹(shù) Ti只有一個(gè)帶有權(quán)值 wi的根結(jié)點(diǎn),其左、右子樹(shù)均為空。 在赫夫曼樹(shù)中,權(quán)值大的結(jié)點(diǎn)離根最近。 n個(gè)結(jié)點(diǎn)的二叉樹(shù)的路徑長(zhǎng)度不小于下述數(shù)列前n項(xiàng)的和,即 其路徑長(zhǎng)度最小者為 ? ????niiPL12l o g帶權(quán)路徑長(zhǎng)度 ( Weighted Path Length, WPL ) 樹(shù)的帶權(quán)路徑長(zhǎng)度是樹(shù)的各 葉結(jié)點(diǎn) 所帶的權(quán)值與該結(jié)點(diǎn)到根的路徑長(zhǎng)度的乘積的和。 ?? 具有不同路徑長(zhǎng)度的二叉樹(shù) 赫夫曼樹(shù) (Huffman Tree)及其應(yīng)用 p144 路徑長(zhǎng)度 (Path Length) 兩個(gè)結(jié)點(diǎn)之間的路徑長(zhǎng)度 是連接兩結(jié)點(diǎn)的路徑上的分支數(shù)。 。 森林的遍歷 森林的二叉樹(shù)表示 (2) 中根次序遍歷的規(guī)則: ? 若森林 F為空,返回;否則 ? 中根次序遍歷第一棵樹(shù)的子樹(shù)森林; ? 訪問(wèn) F的第一棵樹(shù)的根結(jié)點(diǎn); ? 中根次序序遍歷其它樹(shù)組成的森林。 ? 如果 B非空 ,則 F中第一棵樹(shù) T1的根為 root; T1的根的子樹(shù)森林 { T11, T12, …, T1m }是由 root 的左子樹(shù) LB 轉(zhuǎn)換而來(lái), F 中除了 T1 之外 其余的樹(shù)組成的森林 { T2, T3, …, Tn } 是由 root 的右子樹(shù) RB 轉(zhuǎn)換而成的森林。 ? 若 F不空 ,則 對(duì)應(yīng)二叉樹(shù) B的 根 root (B)是 F中第一棵樹(shù) T1的根 root (T1); 其 左子樹(shù)為 B (T11, T12, …, T1m),其中, T11, T12, …, T1m是 root (T1)的子樹(shù); 其 右子樹(shù)為 B (T2, T3, …, Tn),其中, T2, T3, …, Tn是除 T1外其它樹(shù)構(gòu)成的森林。 森林轉(zhuǎn)化成二叉樹(shù) ① 將森林中的每棵樹(shù)轉(zhuǎn)換成對(duì)應(yīng)的二叉樹(shù); ② 將森林中已經(jīng)轉(zhuǎn)換成的二叉樹(shù)的各個(gè)根視為兄弟,各兄弟之間自第一棵樹(shù)根到最后一棵樹(shù)根之間加連線; ③ 以第一棵樹(shù)的根為軸,順時(shí)針旋轉(zhuǎn) 45度。 2. 森林與二叉樹(shù)的轉(zhuǎn)換 森林與二叉樹(shù)的對(duì)應(yīng)關(guān)系 (1) 樹(shù)轉(zhuǎn)化成二叉樹(shù)的簡(jiǎn)單方法 ① 在同胞兄弟之間加連線; ② 保留結(jié)點(diǎn)與第一個(gè)孩子之間的連線,去掉其余連線; ③ 順時(shí)針旋轉(zhuǎn) 45度。 struct CSNode *firstchild, *nextsibling。 //根位置和結(jié)點(diǎn)數(shù) }PTree。 } PTNode。 ? 雙親表示 define MAX_TREE_SIZE 100 typedef struct PTNode{ TElemType data。 } } 1. 樹(shù)的存儲(chǔ)結(jié)構(gòu) 樹(shù)和森林 1)多重鏈表(標(biāo)準(zhǔn)存儲(chǔ)結(jié)構(gòu)) ?定長(zhǎng)結(jié)構(gòu) ( n為樹(shù)的度)指針利用率不高 ?不定長(zhǎng)結(jié)構(gòu) d為結(jié)點(diǎn)的度,節(jié)省空間,但算法復(fù)雜 ?一般采用定長(zhǎng)結(jié)構(gòu) ?如有 n個(gè)結(jié)點(diǎn),樹(shù)的度為 k,則共有 n*k個(gè)指針域,只有 n1個(gè)指針域被利用,而未利用的指針域?yàn)椋?n*k(n1) =n(k1)+1,未利用率為: ( n(k1)+1)/nk n(k1)/nk=(k1)/k 二次樹(shù): 1/2 ;三次樹(shù): 2/3 ;四次樹(shù): 3/4 ?樹(shù)的度越高,未利用率越高,由于二叉樹(shù)的利用率較其他樹(shù)高,因此用二叉樹(shù)。 preTRTag==Thread) prerchild=P。 if (preT amp。 Plchild=pre。 PostThreading(Prchild)。 if (PRTag==Link) PreThreading(Prchild)。 pre=P。amp。} if (!Prchild) PRTag=Thread。 } } 先序線索化 void PreThreading(BiThrTree P) { if (P) { if (!Plchild) { PLTag=Thread。} pre=P。amp。} if (!Prchild) PRTag=Thread。 if (!Plchild){ PLTag=Thread。 }return OK。 preRTag=Thread。 InThreading(T)。 else { Thrtlchild=T。 Thrtrchild=Thrt。 ThrtLTag = Link。 } } P134 算法 (設(shè)定一個(gè)表頭結(jié)點(diǎn)) 注:指針 pre始終指向當(dāng)前訪問(wèn)結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn) int InOrderThreading(BiThrTree amp。} pre=P。} if (!prerchild) { preRTag=Thread。 if (!Plchild) { PLTag=Thread。 InThreading(Prchild)。 Plchild=pre。 } } ?前驅(qū)線索化 —— 處理后繼結(jié)點(diǎn) void InThreading(BiThrTree P) { if (P) { InThreading (Plchild)。 pre=P。 if (pre amp。 二叉樹(shù)的線索化 ?后繼線索化 —— 處理前驅(qū)結(jié)點(diǎn) void InThreading(BiThrTree P) { if (P) { InThreading(Plchild)。 printf(%c,pdata)。 }while (pLTag!=Thread || pRTag!=Thread)。 do { while(pLTag==Link) p=plchild。 if (fRTag==Thread || p==frchild) p=f。 printf(%c,pdata)。 if (pRTag==Link) p=pr
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1