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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

理论基础 —— 二叉树

發布時間:2025/3/17 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 理论基础 —— 二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【二叉樹的定義】

二叉樹( binary tree)是 n 個結點的有限集合,該集合或為空集(空二叉樹),或由一個根結點與兩棵互不相交的,稱為根結點的左子樹右子樹的二叉樹構成。

二叉樹的特點是:

  • 每個結點最多有兩棵子樹,故二叉樹中不存在度大于 2 的結點
  • 二叉樹是有序的,其次序不能任意顛倒,即使樹中的某個結點只有一棵子樹,也要區分它是左子樹還是右子樹

二叉樹具有以下 5 種基本形態:

【特殊的二叉樹】

在實際應用中,常會用到以下幾種特殊的二叉樹。

1.斜樹

所有的結點都只有左子樹的二叉樹稱為左斜樹,所有的結點都只有右子樹的二叉樹稱為右斜樹

在斜樹中,每層只有一個結點,因此斜樹的結點個數與其深度相同

2.滿二叉樹

在一棵二叉樹中,若所有的分支結點都存在左子樹和右子樹,且所有的葉子都在同一層上,則稱為滿二叉樹

其特點是:

  • 葉子只能出現在最下一層
  • 只有度為 0、度為 2 的結點

由于滿二叉樹的特性可知:滿二叉樹在同樣深度的二叉樹中結點個數、葉結點個數最多。

3.完全二叉樹

對一棵具 n 個結點的二叉樹按層序編號,若編號為 i 的結點與同樣深度的滿二叉樹中編號 i 的結點在二叉樹中的位置完全相同,則稱為完全二叉樹,那么顯然有:滿二叉樹是完全二叉樹

其特點是:

  • 葉結點只能出現在最下兩層,且最下層的葉結點都集中在二叉樹左側連續的位置
  • 若有度為 1 的結點,只可能有一個,且其只有左孩子
  • 深度為 k 的完全二叉樹在 k -1 層上行一定是滿二叉樹

簡單來說,在滿二叉樹中,從最后一個結點開始,連續去掉任意個的結點,即是一棵完全二叉樹

【二叉樹的性質】

1.二叉樹的第 i 層上行最多有??個結點

2.在一棵深度為 k 的二叉樹中,最多有? 個結點,最少有 k 個結點

推論:深度為 k 且具? 個結點的二叉樹一定是滿二叉樹,但深度為 k 具有 k 個結點的二叉樹不一定是斜樹

3.具有 n 個結點的二叉樹,其分支數:B=n-1,對于任意一個結點,每度貢獻一個分支,即:度為 0 的結點貢獻 0?個分支,度為 1 的結點貢獻 1 個分支,度為 2 的結點貢獻 2 個分支。

4.在一棵二叉樹中,若葉結點個數為 ,度為 2 結點個數為 ,那么有:

5.具有 n 個結點的完全二叉樹的深度為?

6.對一棵具有 n 個結點的完全二叉樹,從 1 開始按層序編號,則對于任意編號 i 的結點,有:

  • 若 i=1,則:結點 i 為根節點;若 i>1,則:結點 i 的父結點編號為?
  • 若 2i<=n,則:結點 i 的左孩子編號為 2i;若 2i>n,則結點 i 無左孩子
  • 若 2i+1<=n,則:結點 i 的右孩子編號為 2i+1;若 2i+1>n,則結點 i 無右孩子

【二叉樹的遍歷】

二叉樹中最基本的操作是遍歷。

二叉樹的遍歷是從根節點出發,按照某種次序訪問二叉樹中的所有結點,使得每個結點僅被訪問一次。

根據二叉樹的定義可知:一棵二叉樹由根節點、根節點的左子樹、根節點的右子樹三部分構成,因此只要遞歸的遍歷這三部分即可遍歷整棵樹。

二叉樹的遍歷通常分為四種方式:

  • 前序遍歷:先訪問根結點,再前序遍歷根節點的左子樹,然后再前序遍歷根節點的右子樹(根左右)
  • 中序遍歷:先中序遍歷根結點的左子樹,再訪問根節點,然后再中序遍歷根結點的右子樹(左根右)
  • 后序遍歷:先后序遍歷根結點的左子樹,再后序遍歷根結點的右子樹,然后再訪問根結點(左右根)
  • 層次遍歷:從根節點開始,按層次從小到大逐個訪問,同一層次按照從左到右的次序

二叉樹遍歷的性質:

  • 已知前序遍歷序列和中序遍歷序列,可以確定唯一的一棵二叉樹
  • 已知后序遍歷序列和中序遍歷序列,可以確定唯一的一棵二叉樹

【二叉樹的存儲結構】

二叉樹的存儲結構分為:順序存儲結構、二叉鏈表、三叉鏈表、線索鏈表等,其各有優劣,在應用時應根據實際情況靈活使用。

  • 順序存儲結構:點擊這里
  • 二叉鏈表:點擊這里
  • 三叉鏈表:點擊這里
  • 線索鏈表:點擊這里

【樹、森林、二叉樹的轉換】

從樹的孩子兄弟表示法和二叉樹的二叉鏈表表示法可以看出,樹的孩子兄弟表示法實質上是二叉樹的二叉鏈表存儲形式,因此,從物理結構上來看,兩者是相同的,只是解釋不同。

因此,以二叉鏈表為媒介,可導出樹與二叉樹間的對應關系,也就是說,給出一棵樹,可以找到一棵唯一的二叉樹與之對應,這樣一來,對樹的操作即可借助二叉樹的存儲,利用二叉樹上的操作實現。

具體內容:點擊這里

【哈夫曼樹及哈夫曼編碼】

哈夫曼樹(Huffman Tree)又稱最優二叉樹,而哈夫曼編碼(Huffman Coding)又稱最優編碼,是一種編碼方式,屬于可變字長編碼(VLC)一種,其根據字符出現的概率來構造異字頭的平均長度最短的碼字。

哈夫曼樹與哈夫曼編碼是二叉樹的經典應用,在實際中有著廣泛的應用。

具體內容:點擊這里

總結

以上是生活随笔為你收集整理的理论基础 —— 二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。