日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据结构-树】4.图解平衡二叉树和哈夫曼编码(逐步演绎,一文读懂)

發(fā)布時(shí)間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据结构-树】4.图解平衡二叉树和哈夫曼编码(逐步演绎,一文读懂) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、平衡二叉樹

1.1 什么是平衡二叉樹?

規(guī)定在插入和刪除二叉樹結(jié)點(diǎn)時(shí),要保證任意結(jié)點(diǎn)的左、右子樹高度之差的絕對(duì)值不可以超過1

平衡因子:結(jié)點(diǎn)左子樹和右子樹的結(jié)點(diǎn)高度差為該結(jié)點(diǎn)的平衡因子,也就是說平衡樹的平衡因子只可能是-1,0,1

如下圖,結(jié)點(diǎn)53左子樹高度為3,右子樹高度為2,所以結(jié)點(diǎn)53的平衡因子為1




1.2 為什么需要平很二叉樹?

為了避免樹的高度增長過快,降低二叉樹的性能

如下圖,左邊的圖的最壞查找情況為O(n),而右邊圖的最壞查找情況為O(logn)


1.3 平衡二叉樹的機(jī)制?

總綱:調(diào)整過程應(yīng)該是自下而上的

無論是插入還是刪除,改變一個(gè)結(jié)點(diǎn)的位置就會(huì)導(dǎo)致一棵二叉樹的平衡因子改變。因此,在每插入或者刪除一個(gè)結(jié)點(diǎn)之后,需要重新計(jì)算二叉樹各個(gè)結(jié)點(diǎn)的平衡因子。若右結(jié)點(diǎn)的平衡因子大于1,那么需要調(diào)整這棵二叉樹為平衡二叉樹。當(dāng)該樹再次稱為平衡二叉樹之后,再進(jìn)行下一步的插入或刪除操作。

1. LL型

口訣:左失衡,中為支,高右旋

解釋:如果對(duì)于LL型二叉樹轉(zhuǎn)為平衡二叉樹不是很了解,背口訣套就是了。但是,終究要了解為什么這么做。在這一步的過程中,其實(shí)不需要死記硬背,只需要記住每一步的調(diào)整滿足二叉排序的性質(zhì)和定義,然后從整棵二叉樹分析,在{20,23,45},平衡因子在結(jié)點(diǎn)45時(shí)絕對(duì)值大于1,這么調(diào)整{20,23,45}為一棵平衡二叉樹。顯然,讓中間結(jié)點(diǎn)23(23大于20且小于45)作為根,結(jié)點(diǎn)20和結(jié)點(diǎn)45分別作為結(jié)點(diǎn)23的左右孩子結(jié)點(diǎn),符合調(diào)整意圖

調(diào)整過程如下圖所示




2. RR型

口訣:右失衡,中為支,高左旋

解釋:同樣的道理。從整棵二叉樹分析,在{65,70,75},平衡因子在結(jié)點(diǎn)65時(shí)絕對(duì)值大于1,這么調(diào)整{65,70,75}為一棵平衡二叉樹。顯然,讓中間結(jié)點(diǎn)70(70大于65且小于75)作為根,結(jié)點(diǎn)65和結(jié)點(diǎn)75分別作為結(jié)點(diǎn)70的左右孩子結(jié)點(diǎn),符合調(diào)整意圖

調(diào)整過程如下圖所示



3. LR型

口訣:下二整體左旋,后與LL型調(diào)整一樣

解釋:下二整體左旋的目的就是在局部形成類似LL型失衡情況一樣。在這一步的過程中(下二整體左旋),同樣不需要死記硬背,只要滿足一棵二叉排序樹就可以。比如下圖的操作,將結(jié)點(diǎn)25作為結(jié)點(diǎn)23的雙親結(jié)點(diǎn),同時(shí),23比25小,所以結(jié)點(diǎn)23是結(jié)點(diǎn)25的左孩子結(jié)點(diǎn)。此時(shí),整棵樹就是LL型的二叉樹

調(diào)整過程如下圖所示



4. RL型

口訣:下二整體右旋,后與RR型調(diào)整一樣

解釋:下二整體右旋的目的就是在局部形成類似RR型失衡情況一樣。在這一步的過程中,將結(jié)點(diǎn)68作為結(jié)點(diǎn)70的雙親結(jié)點(diǎn),同時(shí),70比68大,所以結(jié)點(diǎn)70是結(jié)點(diǎn)68的右孩子結(jié)點(diǎn)。此時(shí),整棵樹就是RR型的二叉樹,做RR調(diào)整就可以了

調(diào)整過程如下圖所示


二、哈夫曼樹

1.1 什么是哈夫曼樹?

給定N個(gè)權(quán)值作為N個(gè)葉子結(jié)點(diǎn),構(gòu)造一棵二叉樹,若該樹的帶權(quán)路徑長度達(dá)到最小,稱這樣的二叉樹為最優(yōu)二叉樹,也稱為哈夫曼樹

在深入了解哈夫曼樹之前,我們需要先知道一些必要的基本概念。

  • 路徑和路徑長度:在一棵樹中,從一個(gè)結(jié)點(diǎn)往下可以達(dá)到的孩子或?qū)O子結(jié)點(diǎn)之間的通路,稱為路徑。通路中分支的數(shù)目稱為路徑長度。若規(guī)定根結(jié)點(diǎn)的層數(shù)為1,則從根結(jié)點(diǎn)到第L層結(jié)點(diǎn)的路徑長度為L-1。
  • 結(jié)點(diǎn)的權(quán)及帶權(quán)路徑長度:若將樹中結(jié)點(diǎn)賦給一個(gè)有著某種含義的數(shù)值,則這個(gè)數(shù)值稱為該結(jié)點(diǎn)的權(quán)。結(jié)點(diǎn)的帶權(quán)路徑長度為:從根結(jié)點(diǎn)到該結(jié)點(diǎn)之間的路徑長度與該結(jié)點(diǎn)的權(quán)的乘積。
  • 樹的帶權(quán)路徑長度:樹的帶權(quán)路徑長度規(guī)定為所有葉子結(jié)點(diǎn)的帶權(quán)路徑長度之和,記為WPL(Weighted Path Length)。
  • 如下圖:



    圖a:WPL=7?2+5?2+2?2+4?2=36WPL=7*2+5*2+2*2+4*2 = 36WPL=7?2+5?2+2?2+4?2=36

    圖b:WPL=7?3+5?3+2?1+4?2=46WPL=7*3+5*3+2*1+4*2 = 46WPL=7?3+5?3+2?1+4?2=46

    圖c:WPL=7?1+5?2+2?3+4?3=35WPL=7*1+5*2+2*3+4*3 = 35WPL=7?1+5?2+2?3+4?3=35

    比較得知:圖c中樹的WPL最小,所以圖3為一棵哈夫曼樹

    1.2 為什么使用哈夫曼樹?

    在計(jì)算機(jī)數(shù)據(jù)處理中,哈夫曼編碼使用變長編碼表對(duì)源符號(hào)進(jìn)行編碼,其中變長編碼表是通過一種評(píng)估來源符號(hào)出現(xiàn)機(jī)率的方法得到的,出現(xiàn)機(jī)率高的字母使用較短的編碼,反之出現(xiàn)機(jī)率低的則使用較長的編碼,這便使編碼之后的字符串的平均長度、期望值降低,從而達(dá)到無損壓縮數(shù)據(jù)的目的。

    簡單的來說,就按出現(xiàn)的頻率不同,把高頻率出現(xiàn)的目標(biāo)放在距離根結(jié)點(diǎn)近的位置,低頻率出現(xiàn)的目標(biāo)放在距離根結(jié)點(diǎn)源的位置,這樣就使得查找效率提高。

    1.3 如何使用哈夫曼樹?

    給定n個(gè)權(quán)值分別為 w1,w2,…,wnw_1,w_2,…,w_nw1?,w2?,wn? 的結(jié)點(diǎn),通過哈夫曼算法可以構(gòu)造出最優(yōu)二叉樹。

  • 將這n個(gè)結(jié)點(diǎn)分別作為n棵僅含一個(gè)結(jié)點(diǎn)的二叉樹,構(gòu)成森林。
  • 構(gòu)成一個(gè)新的結(jié)點(diǎn),從森林中選取兩棵根結(jié)點(diǎn)最小的樹作為新結(jié)點(diǎn)的左、右子樹,并且將新結(jié)點(diǎn)的的權(quán)值置為左、右子樹上根結(jié)點(diǎn)的權(quán)值和
  • 從森林中刪除步驟2選出的樹,同時(shí)將新得到的樹放入森林中
  • 重復(fù)步驟2和3,直到森林中只剩下一棵樹
  • 哈夫曼樹有如下特點(diǎn):

  • 每個(gè)初始結(jié)點(diǎn)最終都成為葉結(jié)點(diǎn),且權(quán)值越小的結(jié)點(diǎn)到根結(jié)點(diǎn)的路徑越長
  • 構(gòu)造過程中共新建了n?1n-1n?1個(gè)結(jié)點(diǎn),因此哈夫曼樹中的結(jié)點(diǎn)總數(shù)為 2n?12n-12n?1
  • 每次構(gòu)造都選擇2棵樹作為新結(jié)點(diǎn)的孩子,因此哈夫曼樹中不存在度為1的結(jié)點(diǎn)
  • 哈夫曼樹的構(gòu)造過程


    最后穩(wěn)一點(diǎn),大家認(rèn)為哈夫曼樹是唯一的嘛?顯然不是。因?yàn)槎鏄涫欠肿笥医Y(jié)點(diǎn)的,比如上圖(c)中,結(jié)點(diǎn)c是雙親結(jié)點(diǎn)的左孩子結(jié)點(diǎn),結(jié)點(diǎn)d是雙親結(jié)點(diǎn)的右孩子結(jié)點(diǎn),二者交換位置也是可以的,并不影響整棵樹是一棵哈夫曼樹(WPL沒有改變)。所以哈夫曼樹答案不唯一。

    1.4 哈夫曼編碼

    為使不等長編碼為前綴編碼(即要求一個(gè)字符的編碼不能是另一個(gè)字符編碼的前綴),可用字符集中的每個(gè)字符作為葉子結(jié)點(diǎn)生成一棵編碼二叉樹,為了獲得傳送報(bào)文的最短長度,可將每個(gè)字符的出現(xiàn)頻率作為字符結(jié)點(diǎn)的權(quán)值賦予該結(jié)點(diǎn)上,顯然字使用頻率越小權(quán)值越小,權(quán)值越小葉子就越靠下,于是頻率小編碼長,頻率高編碼短,這樣就保證了此樹的最小帶權(quán)路徑長度效果上就是傳送報(bào)文的最短長度。

    因此,求傳送報(bào)文的最短長度問題轉(zhuǎn)化為求由字符集中的所有字符作為葉子結(jié)點(diǎn),由字符出現(xiàn)頻率作為其權(quán)值所產(chǎn)生的哈夫曼樹的問題。利用哈夫曼樹來設(shè)計(jì)二進(jìn)制的前綴編碼,既滿足前綴編碼的條件,又保證報(bào)文編碼總長最短。

    若沒有一個(gè)編碼是另一個(gè)編碼的前綴,則稱這樣的編碼為前綴編碼。

    通過前綴編碼解碼,可以辨識(shí)出第一個(gè)編碼,并將編碼翻譯為源原碼。

    例如:00101100,可以唯一被解讀為:0、0、101、100

    下面舉個(gè)例子

    a:01

    b:10

    c:110

    d:111

    e:00

    通過上面的例子可以看出,對(duì)于每個(gè)葉子結(jié)點(diǎn)上的值都有唯一的編碼

    總結(jié)

    以上是生活随笔為你收集整理的【数据结构-树】4.图解平衡二叉树和哈夫曼编码(逐步演绎,一文读懂)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品视频无码一区二区三区 | 91 色| 亚洲在线网站 | 在线观看的av| 福利免费在线观看 | 天堂av网址 | 欧美人体视频一区二区三区 | 欧美www在线观看 | 一级淫片a| 一区二区三区韩国 | 天天干天天谢 | 性一交一乱一色一视频麻豆 | 成人羞羞网站 | 成人午夜免费福利 | 欧美精品久 | 一区精品在线 | 亚洲黄色片在线观看 | 日韩欧美国产精品综合嫩v 国产小毛片 | 国产小视频在线观看免费 | 黄色网址在线免费看 | 亚洲综合久久av | 伊人网亚洲 | 日韩亚州| 色图网址| 性色欲网站人妻丰满中文久久不卡 | 99精品视频一区二区三区 | 欧美成人综合 | 国产在线一二区 | 国产午夜在线播放 | 久久久久97 | 国产精品666 | 人人cao | 对白刺激theporn | 九色首页 | 欧美一区二区三区在线视频 | 97成人精品| 五月婷婷色综合 | 国产精品一区久久久 | 伊人久久大香线蕉av色婷婷色 | 国产理论视频在线观看 | 成人黄网免费观看视频 | 肉丝超薄少妇一区二区三区 | 日本黄色一级视频 | 免费公开在线视频 | 久久牛牛| 久久久久九九九九 | 国产13页 | 青青国产在线 | 国产精品99精品无码视 | 精品无码黑人又粗又大又长 | 亚洲欧美日韩国产精品 | 日韩欧美aⅴ综合网站发布 国产成人一区二区三区小说 | 国产精品98 | www一起操 | 伊人久色 | 国产精品嫩 | 亚洲av成人无码久久精品老人 | 日本中文字幕在线看 | 99精品视频国产 | 免费成人在线观看 | 国产一区亚洲一区 | 你懂的视频网站 | 日韩精品一卡 | 3d动漫精品啪啪一区二区免费 | 向日葵视频在线播放 | 男女瑟瑟视频 | 九九热精| 天天射综合网站 | 欧美高清视频 | 亚洲品质自拍 | 日韩aⅴ在线观看 | 天天舔天天干 | 日韩中文字幕av | 极品三级 | 国产在线自| 黄色字幕网 | 啪啪综合网| 日韩电影中文字幕 | 老色鬼在线 | 国产高清一区二区三区四区 | 成人精品999| 你懂的在线免费观看 | 超碰资源总站 | 双性受孕h堵精大肚生子 | 色伊伊| 国产又黄又硬又粗 | 精品人妻无码一区二区性色 | 日本黄色中文字幕 | 日本青草视频 | 国产永久在线观看 | 成人性生生活性生交3 | 99久99 | 在线观看黄 | 亚洲自拍偷拍一区二区 | 999久久久久久 | 黄色大片免费观看视频 | 污夜影院| 国产一级免费观看 | 岛国av动作片 |