国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

這篇具有很好參考價值的文章主要介紹了深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

目錄

?編輯

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

1.1樹的概念

1.2 樹的相關概念

?1.3 樹的表示

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

?2.1概念

2.2 特殊的二叉樹

2.3 二叉樹的性質(zhì)?

2.4 簡單二叉樹題目練習?

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

2.5.1 順序存儲——堆

2.5.2 鏈式存儲


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

1.1樹的概念

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

補充:?

有一個特殊的結(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 樹的相關概念

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


溫馨提示:標紅的重點學習哦?。。?/strong>

節(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)棵互不相交的樹的集合稱為森林;(后面學習的并查集就是一顆森林)

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


1.3 樹的表示

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


代碼表示?

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

?畫圖表示

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】



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

?2.1概念

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

1. 或者為空

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

圖來?。?!


深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

?從上圖可以看出:

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

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


2.2 特殊的二叉樹

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

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


2.3 二叉樹的性質(zhì)?

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


2.4 簡單二叉樹題目練習?

2.4.1

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】?運用性質(zhì)3秒解

2.4.2

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

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

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


?2.4.3

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】

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

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

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


2.4.4

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】



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ù)組來存儲,關于堆我們后面的章節(jié)會專門講解。二叉樹順序存儲在物理上是一個數(shù)組,在邏輯上是一顆二叉樹。?

順序存儲邏輯圖

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

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


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

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】


2.5.2 鏈式存儲

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

二叉鏈和三叉鏈

深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】



本文的二叉樹順序存儲(堆)和鏈式存儲先簡單帶入一下概念,后面會專門講解以下內(nèi)容:
堆的概念及結(jié)構(gòu)、堆的實現(xiàn)、堆排序、TOP-K問題

二叉樹的鏈式結(jié)構(gòu)實現(xiàn)

如果覺得文章不錯,期待你的一鍵三連哦,你個鼓勵是我創(chuàng)作的動力之源,讓我們一起加油,頂峰相見!??!文章來源地址http://www.zghlxwxcb.cn/news/detail-439042.html

到了這里,關于深入淺出二叉樹— C語言版【數(shù)據(jù)結(jié)構(gòu)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【數(shù)據(jù)結(jié)構(gòu)與算法】深入淺出:單鏈表的實現(xiàn)和應用

    【數(shù)據(jù)結(jié)構(gòu)與算法】深入淺出:單鏈表的實現(xiàn)和應用

    ? ??博客主頁:青竹霧色間. ??博客制作不易歡迎各位??點贊+?收藏+?關注 ?? 人生如寄,多憂何為? ? 目錄 前言 單鏈表的基本概念 節(jié)點 頭節(jié)點 尾節(jié)點 單鏈表的基本操作 創(chuàng)建單鏈表 頭插法: 尾插法: 插入(增)操作 ?刪除(刪)操作: 查找(查)操作: 修改(改

    2024年02月08日
    瀏覽(24)
  • 深入淺出C語言—【函數(shù)】下

    深入淺出C語言—【函數(shù)】下

    函數(shù)和函數(shù)之間可以根據(jù)實際的需求進行組合的,也就是互相調(diào)用的。 注意: 函數(shù)可以嵌套調(diào)用,但是不能嵌套定義。 把一個函數(shù)的返回值作為另外一個函數(shù)的參數(shù)。 上面的strlen函數(shù)是求數(shù)組長度的庫函數(shù), 特別注意的是,當數(shù)組為字符數(shù)組時,數(shù)組的末尾會自動放一個

    2024年02月17日
    瀏覽(114)
  • 深入淺出分支語句—【C語言】

    深入淺出分支語句—【C語言】

    目錄 前言:為什么要學習分支和循環(huán)語句呢? 1. 語句的分類 2. 分支語句(選擇語句) 2.1 if-else語句 注意點:if-else語句后面不加{},默認只能跟一條語句 2.2? switch語句 ?注意點: 因為C語言是一門結(jié)構(gòu)化的程序設計語言,具有三種結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),這三

    2024年02月02日
    瀏覽(160)
  • 深入淺出循環(huán)語句—【C語言】

    深入淺出循環(huán)語句—【C語言】

    ? 分支語句博客: http://t.csdn.cn/U2kZF 目錄 ?編輯 前言:我們先來了解一下break 、continue在循環(huán)中的作用 1. while循環(huán) ?while循環(huán)中的break ?while循環(huán)中的continue? 2. for循環(huán) for循環(huán)省略出錯舉例: ?for循環(huán)中的break ?for循環(huán)中的continue 3. do???while循環(huán) 利用do?while循環(huán)打印1~10? ?d

    2024年02月04日
    瀏覽(231)
  • 深入淺出C語言—【函數(shù)】上

    深入淺出C語言—【函數(shù)】上

    ?? 目錄 1.函數(shù)的概念 2.C語言函數(shù)的分類 2.1 庫函數(shù) 2.1.1 strcpy庫函數(shù)舉例學習方式 2.1.2?庫函數(shù)擴展知識 2.2 自定義函數(shù) 2.2.1求兩個整數(shù)中的較大值 3. 函數(shù)的參數(shù) 3.1 實際參數(shù)(實參) 3.2 形式參數(shù)(形參) 4. 函數(shù)的調(diào)用 4.1 傳值調(diào)用 4.2 傳址調(diào)用 老鐵們,網(wǎng)址自取,記得一鍵

    2024年02月07日
    瀏覽(82)
  • 深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    深入理解數(shù)據(jù)結(jié)構(gòu)第三彈——二叉樹(3)——二叉樹的基本結(jié)構(gòu)與操作

    二叉樹(1): 深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆-CSDN博客 二叉樹(2): 深入理解數(shù)據(jù)結(jié)構(gòu)第二彈——二叉樹(2)——堆排序及其時間復雜度-CSDN博客 前言: 在前面我們講了堆及其應用,幫助我們初步了解了二叉樹的一些原理,但那與真正的二叉樹仍有不同,

    2024年04月09日
    瀏覽(32)
  • 深入淺出:大語言模型的視覺解析

    深入淺出:大語言模型的視覺解析

    一系列工具與文章的匯編,直觀易懂地解讀復雜的 AI 概念 圖片由作者利用 unDraw.co 的免費插圖制作 在當今世界,大語言模型(LLM)成為了熱門話題。幾乎每天都有新的語言模型問世,讓人們在 AI 領域懷有一種“不容錯過”的緊迫感。盡管如此,許多人仍對大語言模型的基礎

    2024年01月19日
    瀏覽(25)
  • 深入淺出對話系統(tǒng)——自然語言理解模塊

    深入淺出對話系統(tǒng)——自然語言理解模塊

    首先回顧一下自然語言理解的概念。 自然語言理解(Natural Language Understanding)包含三個子模塊: 其中領域識別和意圖識別都是分類問題,而語義槽填充屬于序列標注問題。所以,在自然語言理解中,我們要解決兩個分類任務和一個序列標注任務。既然其中兩個問題都屬于分類任

    2024年02月08日
    瀏覽(21)
  • 深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆

    深入理解數(shù)據(jù)結(jié)構(gòu)第一彈——二叉樹(1)——堆

    前言: 在前面我們已經(jīng)學習了數(shù)據(jù)結(jié)構(gòu)的基礎操作:順序表和鏈表及其相關內(nèi)容,今天我們來學一點有些難度的知識—— 數(shù)據(jù)結(jié)構(gòu)中的二叉樹 ,今天我們先來學習 二叉樹中堆 的知識,這部分內(nèi)容還是非常有意思的,下面我們就開始慢慢學習 準備工作:本人習慣將文件放在

    2024年04月17日
    瀏覽(28)
  • 深入淺出對話系統(tǒng)——基于預訓練語言模型的對話管理

    深入淺出對話系統(tǒng)——基于預訓練語言模型的對話管理

    主要講解三篇論文,主要思想是把自然語言理解、對話管理和自然語言生成三部分整合到一起。 數(shù)據(jù)集 CamRest676 MultiWOZ 都是用的自回歸語言模型 causal GPT-2、Transformer Decoder 一個概念:delexicalization 通過相應的占位符替換特定的槽值 占位符作為特定的token,不關心具體的取值

    2024年02月16日
    瀏覽(162)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包