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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构与算法6—树

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构与算法6—树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

樹的表示方式有

  • ?樹形圖表示法:邏輯結構描述直觀
  • ?嵌套集合表示法(文氏圖表示法)
  • ?凹入表示法
  • ?廣義表表示法
  • 二叉樹

    二叉樹是另一種重要的樹形結構,是度為2的有序樹,它的特點是每個結點至多有兩棵子樹。

    ?

    二叉樹的遞歸定義

    二叉樹是n(n≥0)個結點的有限集。它或者是空集(n=0),或者同時滿足以下兩個條件:

    ? ? (1) 有且僅有一個根結點;

    ? ? (2) 其余的結點分成兩棵互不相交的左子樹和右子樹。

    ?

    二叉樹的特點

    如果二叉樹的根結點只有一棵子樹,必須明確區分它是左子樹還是右子樹,因為兩者將構成不同形態的二叉樹。

    注意:二叉樹不是樹的特例。它們是兩種不同的數據結構。

    ?

    二叉樹舉例

    ?

    二叉樹的性質

    性質1:在二叉樹的第i層上至多有2i-1 個結點。 (i≥1)

    ?

    性質2:深度為 k 的二叉樹上至多含 2k-1 個結點(k≥1)

    證明:

    性質3:對任何一棵二叉樹,若它含有n0個葉子結點、n2個度為2的結點,則必存在關系式:n0= n2+1。

    葉子結點數=度2結點 + 1

    性質4:具有n個結點的完全二叉樹的深度為 [log2n]?+1? 下取整

    證明:

    性質5:

    若對含 n 個結點的完全二叉樹從上到下且從左至右進行 1 至 n 的編號,則對完全二叉樹中任意一個編號為 i 的結點:

    ? ? (1) 若 i=1,則該結點是二叉樹的根,無雙親, 否則,編號為 ?i/2? 的結點為其雙親結點;

    ? ? (2) 若 2i>n,則該結點無左孩子,否則,編號為 2i 的結點為其左孩子結點;

    ? ? (3) 若 2i+1>n,則該結點無右孩子結點, 否則,編號為2i+1 的結點為其右孩子結點。

    ?

    兩類特殊的二叉樹:

    滿二叉樹

    指的是深度為k且含有2k - 1個結點的二叉樹。

    特點:

    (1)每一層上結點數都達到最大

    (2)度為1的結點n1=0,樹葉都在最下一層。

    滿二叉樹結點層序編號方法:

    從根結點起從上到下逐層(層內從左到右)對二叉樹的結點進行連續編號。

    ?

    ?完全二叉樹

    樹中所含的 n 個結點和滿二叉樹中編號為 1 至 n 的結點一一對應。

    完全二叉樹的特點:

    1、滿二叉樹是完全二叉樹,完全二叉樹不一定是滿二叉樹;

    2、在完全二叉樹中,若某個結點沒有左孩子,則它一定沒有右孩子,即該結點必是葉結點。

    ?

    ?二叉樹的存儲結構:

    ?1.順序存儲結構

    用一組地址連續的存儲單元,以層序順序存放二叉樹的數據元素,結點的相對位置蘊含著結點之間的關系。

    如完全二叉樹

    非完全二叉樹,存儲時必須將相應的位置空出來,使存放的結果符合完全二叉樹的形狀。

    ?

    所以,二叉樹順序存儲結構僅適用于完全二叉樹。

    若存儲非完全二叉樹時有可能對存儲空間造成極大的浪費:

    在最壞的情況下,一個深度為K且只有K個結點的右單支樹需要2K-1個結點存儲空間。

    ?

    二叉樹的鏈式存儲結構

    根據二叉樹的非線性結構的特點,常用鏈式存儲方式來表示二叉樹。

    二叉樹的鏈式存儲結構有3種,它們是二叉鏈表、三叉鏈表線索鏈表。

    ?二叉鏈表存儲結構

    把每個結點分成三個域:一個域存放結點本身的信息,另外兩個是指針域,分別存放左、右孩子的地址。每個結點的結構表示為:

    ?

    ?二叉鏈表的C 語言類型描述如下:

    typedef char TElemType; typedef struct Node { TElemType data;struct Node *lchild, *rchild; } BiTNode, *BiTree;

    ?

    三叉鏈表(帶雙親指針的二叉鏈表)

    ?

    轉載于:https://www.cnblogs.com/lisen10/p/10850336.html

    總結

    以上是生活随笔為你收集整理的数据结构与算法6—树的全部內容,希望文章能夠幫你解決所遇到的問題。

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