最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入探究C語言中的二叉樹

 更新時間:2023年05月08日 11:44:28   作者:小余大牛成長記  
樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個有限結(jié)點組成一個具有層次關(guān)系的集合。把它叫做樹是因 為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。本文將帶你深入探究C語言中的二叉樹,感興趣的同學(xué)跟著小編一起學(xué)習(xí)吧

1.樹概念及結(jié)構(gòu)

1.1樹的概念

樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個有限結(jié)點組成一個具有層次關(guān)系的集合。把它叫做樹是因 為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的。

補充: 

有一個特殊的結(jié)點,稱為根結(jié)點,根節(jié)點沒有前驅(qū)結(jié)點。除根節(jié)點外,其余結(jié)點被分成M(M>0)個互不相交的集合T1、T2、……、Tm,其中每一個集合Ti(1<= i <= m)又是一棵結(jié)構(gòu)與樹類似的子樹。每棵子樹的根結(jié)點有且只有一個前驅(qū),可以有0個或多個后繼。因此,樹是遞歸定義的。

 1.2 樹的相關(guān)概念

節(jié)點的度:一個節(jié)點含有的子樹的個數(shù)稱為該節(jié)點的度; 如上圖:A的為6

葉節(jié)點或終端節(jié)點:度為0的節(jié)點稱為葉節(jié)點; 如上圖:B、C、H、I...等節(jié)點為葉節(jié)點

非終端節(jié)點或分支節(jié)點:度不為0的節(jié)點; 如上圖:D、E、F、G...等節(jié)點為分支節(jié)點

雙親節(jié)點或父節(jié)點:若一個節(jié)點含有子節(jié)點,則這個節(jié)點稱為其子節(jié)點的父節(jié)點; 如上圖:A是B的父節(jié)點

孩子節(jié)點或子節(jié)點:一個節(jié)點含有的子樹的根節(jié)點稱為該節(jié)點的子節(jié)點; 如上圖:B是A的孩子節(jié)點

兄弟節(jié)點:具有相同父節(jié)點的節(jié)點互稱為兄弟節(jié)點(親兄弟); 如上圖:B、C是兄弟節(jié)點

樹的度:一棵樹中,最大的節(jié)點的度稱為樹的度; 如上圖:樹的度為6

樹的高度或深度:樹中節(jié)點的最大層次; 如上圖:樹的高度為4

堂兄弟節(jié)點:雙親在同一層的節(jié)點互為堂兄弟;如上圖:H、I互為兄弟節(jié)點

節(jié)點的祖先:從根到該節(jié)點所經(jīng)分支上的所有節(jié)點;如上圖:A是所有節(jié)點的祖先

子孫:以某節(jié)點為根的子樹中任一節(jié)點都稱為該節(jié)點的子孫。如上圖:所有節(jié)點都是A的子孫

森林:由m(m>0)棵互不相交的樹的集合稱為森林;(后面學(xué)習(xí)的并查集就是一顆森林)

我們必須了解這些概念,因為我們后面做題會問怎么求這些。比如:求二叉樹的深度

1.3 樹的表示

樹結(jié)構(gòu)相對線性表就比較復(fù)雜了,要存儲表示起來就比較麻煩了,既然保存值域,也要保存結(jié)點和結(jié)點之間 的關(guān)系,實際中樹有很多種表示方式如:雙親表示法,孩子表示法、孩子雙親表示法以及孩子兄弟表示法等。我們這里就簡單的了解其中最常用的孩子兄弟表示法。

代碼表示 

畫圖表示

2.二叉樹概念及結(jié)構(gòu)   

2.1概念

一棵二叉樹是結(jié)點的一個有限集合:

1. 或者為空

2. 由一個根節(jié)點加上兩棵別稱為左子樹和右子樹的二叉樹組成

圖來?。?!

 從上圖可以看出:

    1. 二叉樹不存在度大于2的結(jié)點

    2. 二叉樹的子樹有左右之分,次序不能顛倒,因此二叉樹是有序樹

2.2 特殊的二叉樹

滿二叉樹和完全二叉樹介紹

2.3 二叉樹的性質(zhì) 

2.4 簡單二叉樹題目練習(xí) 

2.4.1

運用性質(zhì)3秒解

2.4.2

我們觀察這個完全二叉樹,可以得出二叉樹最多存在三個度,度為0、1、2。而且度為1的只可能有兩個取值0或1

這時我們可以利用性質(zhì)3,將n2用n0表示,這樣就可以算出葉子節(jié)點個數(shù)(也就是度為0的節(jié)點個數(shù))

2.4.3

高度為h的完全二叉樹節(jié)點范圍是多少呢?

最小值:當(dāng)?shù)趆層只有一個節(jié)點的時候(為什么要有一個節(jié)點呢,因為題目說的是完全二叉樹,如果第h層沒有節(jié)點的話就是h-1層的滿二叉樹了)

2.4.4

2.5 二叉樹的存儲結(jié)構(gòu)

二叉樹一般可以使用兩種結(jié)構(gòu)存儲,一種順序結(jié)構(gòu),一種鏈式結(jié)構(gòu)。

2.5.1 順序存儲——堆

順序結(jié)構(gòu)存儲就是使用數(shù)組來存儲,一般使用數(shù)組只適合表示完全二叉樹,因為不是完全二叉樹會有空間的浪費。而現(xiàn)實中使用中只有堆才會使用數(shù)組來存儲,關(guān)于堆我們后面的章節(jié)會專門講解。二叉樹順序存儲在物理上是一個數(shù)組,在邏輯上是一顆二叉樹。 

順序存儲邏輯圖

順序存儲結(jié)構(gòu)只適用于完全二叉樹和滿二叉樹,用數(shù)組的方式存儲,可以計算父子之間的下標關(guān)系

不是完全二叉樹和滿二叉樹,就會出現(xiàn)下面的問題,有空間的浪費(不適合),下面的鏈式存儲結(jié)構(gòu)更適合這種二叉樹

2.5.2 鏈式存儲

二叉樹的鏈式存儲結(jié)構(gòu)是指,用鏈表來表示一棵二叉樹,即用鏈來指示元素的邏輯關(guān)系。 通常的方法是鏈表中每個結(jié)點由三個域組成,數(shù)據(jù)域和左右指針域,左右指針分別用來給出該結(jié)點左孩子和右孩子所 在的鏈結(jié)點的存儲地址 。鏈式結(jié)構(gòu)又分為二叉鏈和三叉鏈,當(dāng)前我們學(xué)習(xí)中一般都是二叉鏈,后面課程學(xué)到高階數(shù)據(jù)結(jié)構(gòu)如紅黑樹等會用到三叉鏈。

二叉鏈和三叉鏈

如果覺得文章不錯,期待你的一鍵三連哦,你個鼓勵是我創(chuàng)作的動力之源,讓我們一起加油,頂峰相見!??!

以上就是深入探究C語言中的二叉樹的詳細內(nèi)容,更多關(guān)于C語言 二叉樹的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++遍歷map的實現(xiàn)示例

    C++遍歷map的實現(xiàn)示例

    std::map是一種關(guān)聯(lián)容器,它存儲的是鍵值對,并且按鍵的順序進行排序,本文主要介紹了C++遍歷map的實現(xiàn)示例,感興趣的可以了解一下,感興趣的可以了解一下
    2025-04-04
  • C/C++可變參數(shù)的使用

    C/C++可變參數(shù)的使用

    可變參數(shù)的使用方法遠遠不止以下幾種,不過在C,C++中使用可變參數(shù)時要小心,在使用printf()等函數(shù)時傳入的參數(shù)個數(shù)一定不能比前面的格式化字符串中的’%’符號個數(shù)少,否則會產(chǎn)生訪問越界,運氣不好的話還會導(dǎo)致程序崩潰
    2013-09-09
  • C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    C++ Template 基礎(chǔ)篇(一):函數(shù)模板詳解

    這篇文章主要介紹了C++ Template函數(shù)模板,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 淺析C++字節(jié)對齊容易被忽略的兩個問題

    淺析C++字節(jié)對齊容易被忽略的兩個問題

    今天我就和大家分享一下C++字節(jié)對齊容易被忽略的兩個問題。以下問題也是我實際開發(fā)工作中遇到的,如果有不同意見歡迎交流
    2013-07-07
  • C語言的運算符你了解嗎

    C語言的運算符你了解嗎

    這篇文章主要介紹了C語言中的運算符,本文給大家介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下,希望能給你帶來幫助
    2021-08-08
  • 詳解C語言編程之thread多線程

    詳解C語言編程之thread多線程

    這篇文章主要為大家介紹了C語言編程之thread多線程,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • C++結(jié)構(gòu)體字節(jié)對齊示例

    C++結(jié)構(gòu)體字節(jié)對齊示例

    這篇文章主要為大家介紹了C++結(jié)構(gòu)體字節(jié)對齊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • C++實現(xiàn)softmax函數(shù)的面試經(jīng)驗

    C++實現(xiàn)softmax函數(shù)的面試經(jīng)驗

    這篇文章主要為大家介紹了C++實現(xiàn)softmax函數(shù)的面試經(jīng)驗,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • 關(guān)于C++中定義比較函數(shù)的三種方法小結(jié)

    關(guān)于C++中定義比較函數(shù)的三種方法小結(jié)

    下面小編就為大家?guī)硪黄P(guān)于C++中定義比較函數(shù)的三種方法小結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • C語言遞歸在實踐題目中應(yīng)用詳解

    C語言遞歸在實踐題目中應(yīng)用詳解

    遞歸是C語言中非常重要的知識點,其中的大事化小等思想對初學(xué)C語言的小伙伴來說不是很友好,因此我整理了遞歸的經(jīng)典題目并向外拓展,給你全面的介紹,重新認識遞歸
    2022-05-05

最新評論

加查县| 沈阳市| 礼泉县| 慈溪市| 綦江县| 桑植县| 久治县| 木里| 临高县| 滕州市| 大港区| 盈江县| 芜湖市| 札达县| 静海县| 宁德市| 吉隆县| 富阳市| 平果县| 长沙市| 鹿邑县| 玉林市| 如皋市| 巨野县| 隆安县| 涪陵区| 醴陵市| 鸡西市| 玉溪市| 蓬安县| 台前县| 行唐县| 剑川县| 横峰县| 科技| 屯门区| 济宁市| 论坛| 道孚县| 介休市| 嘉峪关市|