<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關(guān)注

      當(dāng)前位置: 首頁 » 企業(yè)資訊 » 熱點 » 正文

      小白科普丨何為樹_二叉樹和森林

      放大字體  縮小字體 發(fā)布日期:2023-03-08 21:19:12    作者:江明杰    瀏覽次數(shù):106
      導(dǎo)讀

      本文分享自華為云社區(qū)《樹、二叉樹和森林的表示及相互轉(zhuǎn)換-云社區(qū)-華為云》,作者:1+1=王。樹的基本概念樹的定義:樹是n(n = 0)個節(jié)點的==有限==集。當(dāng)n=0是,稱為空樹。樹的特點:(1)樹的根沒有前驅(qū),除根外的

      本文分享自華為云社區(qū)《樹、二叉樹和森林的表示及相互轉(zhuǎn)換-云社區(qū)-華為云》,作者:1+1=王。

      樹的基本概念
    • 樹的定義:樹是n(n >= 0)個節(jié)點的==有限==集。當(dāng)n=0是,稱為空樹。
    • 樹的特點:
      (1)樹的根沒有前驅(qū),除根外的其他節(jié)點有且僅有一個前驅(qū);
      (2)每個節(jié)點都可以有零個或多個后繼。
    • 術(shù)語:
      (1)節(jié)點的度:樹中一個節(jié)點的孩子個數(shù)。
      (2)樹的度:樹中節(jié)點的最大度。
      (3)分支節(jié)點:度大于0的節(jié)點。
      (4)葉子結(jié)點:度為0的節(jié)點。
      (5)節(jié)點的深度:從根節(jié)點開始自頂向下逐層累加。
      (6)節(jié)點的高度:從葉子節(jié)點開始自底向上逐層累加。
      (7)樹的高度:樹中節(jié)點的最大層數(shù)。
      (8)路徑:兩個節(jié)點之間所經(jīng)過的節(jié)點序列。
      (9)路徑長度:路徑上所經(jīng)過的邊的個數(shù)。
      (10)森林:m(m >= 0)棵互不相交的樹的集合。二叉樹的基本概念
    • 二叉樹的定義:一種特殊的樹形結(jié)構(gòu),它的特點是每個節(jié)點至多有兩顆子樹(即二叉樹中不存在度大于2的節(jié)點),并且二叉樹的子樹有左右之分,不能隨意顛倒。
    • 幾種特殊的二叉樹:
      (1)滿二叉樹:一棵高度為h,且含有2^h - 1個節(jié)點的二叉樹。
      (2)完全二叉樹:對應(yīng)相同高度的滿二叉樹缺失最下層最右邊的一些連續(xù)葉子結(jié)點。
      (3)二叉排序樹:左子樹上所有節(jié)點的關(guān)鍵字都小于根節(jié)點的關(guān)鍵字;右子樹上所有節(jié)點的關(guān)鍵字都大于根節(jié)點的關(guān)鍵字;左子樹和右子樹又各是一棵二叉排序樹。(左 < 根 < 右)
      (4)平衡二叉樹:任一節(jié)點的左子樹和右子樹的深度之差不超過1的二叉排序樹。
    • 二叉樹的性質(zhì):
      (1)二叉樹的第i層上至多有2^i-1^個節(jié)點;
      (2)深度為h的二叉樹至多有2^k^ - 1個節(jié)點;
      (3)對任何一個二叉樹,若其終端節(jié)點樹為n0,度為2的節(jié)點樹為n2,則n0 = n2 + 1;
      (4)具有n個節(jié)點的完全二叉樹的深度為log~2~(n + 1)向上取整。
      (5)對完全二叉樹按從上到下、從左到右的順序依次編號1,2,3,…,則有以下關(guān)系:
      a. 當(dāng)i>1時,節(jié)點i的雙親的編號為i / 2;
      b. 當(dāng)2i<=n時,節(jié)點i的左孩子編號為2i,否則無左孩子;
      c. 當(dāng)2i+1<=n時,節(jié)點i的右孩子編號為2i+1,否則無右孩子;
      d.節(jié)點i所在層次為log~2~i + 1(向下取整)。存儲結(jié)構(gòu)二叉樹的存儲結(jié)構(gòu)
    • 順序存儲結(jié)構(gòu):用一組地址連續(xù)的存儲單元依次自上而下、自左至右存儲完全二叉樹上的結(jié)點元素,即將完全二叉樹上編號為i的結(jié)點元素存儲在某個數(shù)組下標(biāo)為i-1的分量中。(適合完全二叉樹和滿二叉樹)
    • 鏈?zhǔn)酱鎯Y(jié)構(gòu):使用鏈表節(jié)點來存儲二叉樹中的每個節(jié)點。二叉鏈表包括數(shù)據(jù)域data、左指針域lchild和右指針域rchild三個域。

      typedef struct BiTNode{TElemType data;struct BiTNode *lchild, *rchild;}BiTNode,*BiTree;樹的存儲結(jié)構(gòu)

    • 雙親表示法:用一組連續(xù)空間來存儲樹的每個結(jié)點,同時在每個結(jié)點中,附設(shè)一個指示器指示其雙親結(jié)點到鏈表中的位置。

      #define MAX_TREE_SIZE 100//節(jié)點最大個數(shù)typedef struct PTNode{//節(jié)點結(jié)構(gòu)TElemType data;int parent;//雙親位置域}PTNode;typedef struct{//樹結(jié)構(gòu)PTNode nodes[MAX_TREE_SIZE ];int root,n;//根的位置和節(jié)點數(shù)}PTree;

    • 孩子表示法:將沒得節(jié)點的孩子節(jié)點都用單鏈表鏈接起來形成一個線性結(jié)構(gòu),此時n個節(jié)點就有n個孩子鏈表。

      #define MAX_TREE_SIZE 100//節(jié)點最大個數(shù)typedef struct CTNode{//孩子節(jié)點int child;struct CTNode *next;}*ChildPtr;typedef struct{TElemType data;ChildPtr firstChild;//孩子鏈表頭指針}CTBox;typedef struct{//樹結(jié)構(gòu)CTBox nodes[MAX_TREE_SIZE ];int root,n;//根的位置和節(jié)點數(shù)}CTree;

    • 孩子兄弟表示法(二叉樹表示法):以二叉鏈表作為樹的存儲結(jié)構(gòu)。每個節(jié)點包括三部分內(nèi)容:節(jié)點值、指向第一個孩子結(jié)點的指針和指向下一個兄弟節(jié)點的指針。

      typedef struct CSNode{//節(jié)點結(jié)構(gòu)TElemType data;struct CSNode *firstChild,*nextSibling;}CSNode,*CSTree;樹、二叉樹和森林的相互轉(zhuǎn)換樹轉(zhuǎn)換為二叉樹

    • 規(guī)則:每個節(jié)點左指針指向它的第一個孩子,右指針指向它在樹中的相鄰右兄弟。由于根節(jié)點沒有兄弟,所以對應(yīng)的二叉樹沒有右子樹。
    • 畫法:(1)在兄弟節(jié)點之間加一條線;(2)在每棵樹根之間加一條線;(3)以第一棵根為軸心,順時針旋轉(zhuǎn)45度。森林轉(zhuǎn)換為二叉樹
    • 規(guī)則:先將森林中的每棵樹轉(zhuǎn)換為二叉樹,由于任何一棵和樹對應(yīng)的二叉樹的右子樹為空,若把森林中第二棵樹根視為第一棵樹根的右兄弟,即將第二棵樹對應(yīng)的二叉樹當(dāng)做第一棵二叉樹根的右子樹,將第三棵樹對應(yīng)的二叉樹當(dāng)做第二棵二叉樹根的右子樹…以此類推,即可將森林轉(zhuǎn)換為二叉樹。
    • 畫法:(1)將森林中的每棵樹轉(zhuǎn)換為二叉樹;(2)對每個節(jié)點,只保留它與第一個孩子的連線;(3)以根為軸心,順時針旋轉(zhuǎn)45度。二叉樹轉(zhuǎn)換為森林
    • 若二叉樹非空,則二叉樹的根及其左子樹為第一棵樹的二叉樹形式,將根與右子樹斷開
    • 將右子樹視為一棵新的二叉樹,重復(fù)第一步。

      點擊下方,第一時間了解華為云新鮮技術(shù)~

      華為云博客_大數(shù)據(jù)博客_AI博客_云計算博客_開發(fā)者中心-華為云

      #華為云開發(fā)者聯(lián)盟#

    •  
      (文/江明杰)
      免責(zé)聲明
      本文僅代表作發(fā)布者:江明杰個人觀點,本站未對其內(nèi)容進(jìn)行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

      Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

      粵ICP備16078936號

      微信

      關(guān)注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號: weishitui

      客服001 客服002 客服003

      工作時間:

      周一至周五: 09:00 - 18:00

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: 欧美性受xxxx狂喷水| 2021国产精品露脸在线| 精品久久久无码中文字幕天天| 日本无遮挡边做边爱边摸| 国产无遮挡裸体免费视频| 亚洲午夜久久久精品影院| 污片在线观看网站| 欧美人与动牲免费观看一| 国产精品水嫩水嫩| 亚洲国产欧美另类va在线观看| 伊人久热这里只精品视频| 欧美性色黄大片在线观看| 国产精品亚洲专区无码不卡| 亚洲免费闲人蜜桃| 欧美亚洲日本另类人人澡gogo| 最近中文字幕高清中文字幕电影二 | 中文字幕乱码系列免费| 美女尿口18以下禁止观看免费| 成年女人毛片免费观看97| 又色又污又爽又黄的网站| 一级特级女人18毛片免费视频| 粉嫩大学生无套内射无码卡视频 | 精品一区精品二区制服| 日本熟妇色一本在线观看| 国产人妖cdmagnet| 中文字幕乱码人在线视频1区| 精品综合久久久久久98| 女人国产香蕉久久精品| 亚洲精品乱码久久久久久下载 | 亚洲一区二区三区偷拍女厕| 黄色成人在线网站| 日本人视频-jlzzjlzzjlzz| 少妇AV射精精品蜜桃专区| 免费国产成人手机在线观看 | 成品大香煮伊在2021一| 午夜三级黄色片| 99re热视频在线| 极品人体西西44f大尺度| 国产乱子伦在线观看| 一本大道无码人妻精品专区| 毛片免费全部无码播放|