【數據結構】樹的介紹

目錄

  • 一、樹
    • 1.1什么是樹?
    • 1.2 樹的概念與結構
    • 1.3樹的相關術語
    • 1.4 樹形結構實際運用場景
  • 二、二叉樹
    • 2.1 概念與結構
    • 2.2 特殊的二叉樹
      • 2.2.1 滿二叉樹
      • 2.2.2 完全二叉樹

個人主頁,點擊這里~
數據結構專欄,點擊這里~

在這里插入圖片描述

一、樹

1.1什么是樹?

這是我們生活中常見的樹:
在這里插入圖片描述

(以上圖片來自網絡,如若侵權聯系自刪)

生活中許多東西都可以抽象成為一棵樹,例如一本書的目錄:
在這里插入圖片描述
它們都像自然界中的樹一樣,從衍生出許多枝干,再由枝干衍生出許多更小的枝干,最終衍生出了許多葉子

1.2 樹的概念與結構

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

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

注意樹形結構中,子樹之間不能有交集,否則就不是樹形結構。
在這里插入圖片描述
非樹形結構:
在這里插入圖片描述
關于樹:

  • 子樹是不相交的(如果存在相交就是圖了);
  • 除了根結點外,每個結點有且僅有?個父結點
  • ?棵N個結點的樹有N-1條邊!

1.3樹的相關術語

在這里插入圖片描述
父結點/雙親結點:若?個結點含有子結點,則這個結點稱為其子結點的父結點;如上圖:A是B的父結點
子結點/孩子結點:?個結點含有的子樹的根結點稱為該結點的子結點; 如上圖:B是A的孩子結點。
結點的度:?個結點有幾個孩子,它的度就是多少;比如A的度為6,F的度為2,K的度為0
樹的度:?棵樹中,最大的結點的度稱為樹的度; 如上圖:樹的度為 6
葉子結點/終端結點:度為 0 的結點稱為葉結點; 如上圖:B、C、H、I...等結點為葉結點。
分支結點/非終端結點:度不為0的結點; 如上圖:D、E、F、G...等結點為分支結點。
兄弟結點:具有相同父結點的結點互稱為兄弟結點(親兄弟); 如上圖:B、C 是兄弟結點
結點的層次:從根開始定義起,根為第 1 層,根的子結點為第 2 層,以此類推;
樹的高度或深度:樹中結點的最大層次; 如上圖:樹的高度為 4。
結點的祖先:從根到該結點所經分支上的所有結點;如上圖: A 是所有結點的祖先。
路徑:?條從樹中任意節點出發,沿父節點-子節點連接,達到任意節點的序列;比如A到Q的路徑為:A-E-J-Q;H到Q的路徑H-D-A-E-J-Q
子孫:以某結點為根的子樹中任?結點都稱為該結點的子孫。如上圖:所有結點都是A的子孫
森林:由 m(m>0) 棵互不相交的樹的集合稱為森林;

1.4 樹形結構實際運用場景

文件系統是計算機存儲和管理文件的?種方式,它利用樹形結構來組織和管理文件和文件夾。在文件系統中,樹結構被?泛應?,它通過父結點子結點之間的關系來表示不同層級的文件文件夾之間的關聯。
在這里插入圖片描述

二、二叉樹

2.1 概念與結構

在樹形結構中,我們最常用的就是二叉樹?棵二叉樹是結點的?個有限集合,該集合由?個根結點加上兩棵別稱為左子樹和右子樹的二叉樹組成,或者為空。
在這里插入圖片描述從上圖可以看出二叉樹具備以下特點:

  • 二叉樹不存在度大于 2 的結點。
  • 二叉樹的子樹有左右之分,次序不能顛倒,因此?叉樹是有序樹

注意:對于任意的二叉樹都是由以下幾種情況復合而成的:
在這里插入圖片描述
自然界的二叉樹
在這里插入圖片描述

(以上圖片來自網絡,如若侵權聯系自刪)

2.2 特殊的二叉樹

2.2.1 滿二叉樹

一個二叉樹,如果每一個層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。也就是說,如果?個二叉樹的層數為 K ,且結點總數是 2k ? 1,則它就是滿二叉樹
在這里插入圖片描述

2.2.2 完全二叉樹

完全二叉樹是效率很高的數據結構,完全二叉樹是由滿二叉樹而引出來的。對于深度為 K 的,有 n 個結點的二叉樹,當且僅當其每?個結點都與深度為K的滿二叉樹中編號從 1 ?n 的結點??對應時稱之為完全二叉樹。要注意的是滿二叉樹是?種特殊的完全二叉樹。

在這里插入圖片描述
注意:這里如果JE右孩子樹,那就不是一一對應的關系了,那這棵樹就不是完全二叉樹。

特點

  • 除了最后一層,每層結點個數達到最大。
  • 最后一層結點個數不一定達到最大。
  • 結點從左到右依次排列。

二叉樹的性質:

  • 若規定根結點的層數為 1 ,則?棵非空二叉樹的第i層上最多有 2i?1 個結點。
  • 若規定根結點的層數為 1 ,則深度為 h 的二叉樹的最大結點數是 2h ? 1。
  • 若規定根結點的層數為 1 ,具有 n 個結點的滿二叉樹的深度 h = log(2) (n + 1) 。( log以2為底, n+1 為對數)。

總結:
以上就是本期博客分享的全部內容啦!如果覺得文章還不錯的話可以三連支持一下,你的支持就是我前進最大的動力!
技術的探索永無止境! 道阻且長,行則將至!后續我會給大家帶來更多優質博客內容,歡迎關注我的CSDN賬號,我們一同成長!
(~ ̄▽ ̄)~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75595.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Muduo網絡庫實現 [十三] - HttpRequest模塊

目錄 設計思路 成員設計 模塊實現 設計思路 首先我們要先知道HTTP的請求的流程是什么樣子的&#xff0c;不然我們會學的很迷糊。對于HTTP請求如何到來以及去往哪里&#xff0c;我們應該很清楚的知道 HTTP請求在服務器系統中的傳遞流程是一個多層次的過程: 客戶端發起請求…

6. RabbitMQ 死信隊列的詳細操作編寫

6. RabbitMQ 死信隊列的詳細操作編寫 文章目錄 6. RabbitMQ 死信隊列的詳細操作編寫1. 死信的概念2. 消息 TTL 過期(觸發死信隊列)3. 隊列超過隊列的最大長度(觸發死信隊列)4. 消息被拒(觸發死信隊列)5. 最后&#xff1a; 1. 死信的概念 先從概念上解釋上搞清楚這個定義&#…

如何使用Selenium進行自動化測試?

&#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 對于很多剛入門的測試新手來說&#xff0c;大家都將自動化測試作為自己職業發展的一個主要階段。可是&#xff0c;在成為一名合格的自動化測試工程師之前&#…

洛谷題單3-P5724 【深基4.習5】求極差 最大跨度值 最大值和最小值的差-python-流程圖重構

題目描述 給出 n n n 和 n n n 個整數 a i a_i ai?&#xff0c;求這 n n n 個整數中的極差是什么。極差的意思是一組數中的最大值減去最小值的差。 輸入格式 第一行輸入一個正整數 n n n&#xff0c;表示整數個數。 第二行輸入 n n n 個整數 a 1 , a 2 … a n a_1,…

STM32智能手表——任務線程部分

RTOS和LVGL我沒學過&#xff0c;但是應該能硬啃這個項目例程 ├─Application/User/Tasks # 用于存放任務線程的函數 │ ├─user_TaskInit.c # 初始化任務 │ ├─user_HardwareInitTask.c # 硬件初始化任務 │ ├─user_RunModeTasks.c…

ubuntu22.04LTS設置中文輸入法

打開搜狗網址直接下載軟件&#xff0c;軟件下載完成后&#xff0c;會彈出安裝教程說明書。 網址:搜狗輸入法linux-首頁搜狗輸入法for linux—支持全拼、簡拼、模糊音、云輸入、皮膚、中英混輸https://shurufa.sogou.com/linux

SQL Server數據庫異常-[SqlException (0x80131904): 執行超時已過期] 操作超時問題及數據庫日志已滿的解決方案

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSDN平臺優質創作者&#xff0c;獲得2024年博客之星榮譽證書&#xff0c;高級開發工程師&#xff0c;數學專業&#xff0c;擁有高級工程師證書&#xff1b;擅長C/C、C#等開發語言&#xff0c;熟悉Java常用開發技術&#xff0c…

php8 ?-> nullsafe 操作符 使用教程

簡介 PHP 8 引入了 ?->&#xff08;Nullsafe 操作符&#xff09;&#xff0c;用于簡化 null 檢查&#xff0c;減少繁瑣的 if 語句或 isset() 代碼&#xff0c;提高可讀性。 ?-> Nullsafe 操作符的作用 在 PHP 7 及以下&#xff0c;訪問對象的屬性或方法時&#xff0…

WORD+VISIO輸出PDF圖片提高清晰度的方法

WORDVISIO輸出PDF圖片提高清晰度的方法 part 1: visio 繪圖part 2: word 導出 part 1: visio 繪圖 先在visio中把圖片和對應的文字調整為適合插入到文章中的尺寸&#xff1b; 在visio中把所有元素進行組合&#xff1b; 把組合后的圖片長和寬等比例放縮&#xff0c;如放大10倍…

重要頭文件下的函數

1、<cctype> #include<cctype>加入這個頭文件就可以調用以下函數&#xff1a; 1、isalpha(x) 判斷x是否為字母 isalpha 2、isdigit(x) 判斷x是否為數字 isdigit 3、islower(x) 判斷x是否為小寫字母 islower 4、isupper(x) 判斷x是否為大寫字母 isupper 5、isa…

基于大模型預測不穩定性心絞痛的多維度研究與應用

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的 1.3 國內外研究現狀 二、不穩定性心絞痛概述 2.1 定義與分類 2.2 發病機制 2.3 臨床表現 三、大模型技術原理與應用基礎 3.1 大模型介紹 3.2 在醫療領域的應用現狀 3.3 用于不穩定性心絞痛預測的可行性 四、術前預…

第一講—函數的極限與連續(一)

思維導圖 筆記 雙曲正弦函數及其反函數

Mac VM 卸載 win10 安裝win7系統

卸載 找到相應直接刪除&#xff08;移動到廢紙簍&#xff09; 可參考&#xff1a;mac如何卸載虛擬機win 下載 win7下載地址

免費送源碼:Java+SSM+Android Studio 基于Android Studio游戲搜索app的設計與實現 計算機畢業設計原創定制

摘要 本文旨在探討基于SSM框架和Android Studio的游戲搜索App的設計與實現。首先&#xff0c;我們詳細介紹了SSM框架&#xff0c;這是一種經典的Java Web開發框架&#xff0c;由Spring、SpringMVC和MyBatis三個開源項目整合而成&#xff0c;為開發企業級應用提供了高效、靈活、…

網絡安全的現狀與防護措施

隨著數字化和信息化的迅猛發展&#xff0c;互聯網已成為人們日常生活、工作和學習不可或缺的一部分。然而&#xff0c;隨著網絡技術的普及&#xff0c;網絡安全問題也日益突出。近年來&#xff0c;數據泄露、惡意軟件、網絡攻擊等事件層出不窮&#xff0c;給企業和個人帶來了巨…

android databinding使用教程

Android DataBinding 是一種可以將 UI 組件與數據源綁定的框架&#xff0c;能夠減少 findViewById 的使用&#xff0c;并提高代碼的可維護性。下面是 DataBinding 的完整使用教程&#xff1a; 1. 啟用 DataBinding 在 build.gradle&#xff08;Module 級別&#xff09;中啟用 …

python如何快速刪除文件夾中的大量文件

在 Python 中&#xff0c;刪除文件夾中的大量小圖片文件可以通過使用 os 模塊或 shutil 模塊來實現。以下是一個示例代碼&#xff0c;展示了如何快速刪除指定文件夾中的所有文件。如果你只需要刪除小圖片文件&#xff0c;可以添加額外的邏輯來檢查文件大小。 以下是一個示例代…

如何使用 IntelliJ IDEA 開發命令行程序(或 Swing 程序)并手動管理依賴(不使用 pom.xml)

以下是詳細步驟&#xff1a; 1. 創建項目 1.1 打開 IntelliJ IDEA。 1.2 在啟動界面&#xff0c;點擊 Create New Project&#xff08;創建新項目&#xff09;。 1.3 選擇 Java&#xff0c;然后點擊 Next。 1.4 確保 Project SDK 選擇了正確的 JDK 版本&#x…

FastAPI-Cache2: 高效Python緩存庫

FastAPI-Cache2是一個強大而靈活的Python緩存庫&#xff0c;專為提升應用性能而設計。雖然其名稱暗示與FastAPI框架的緊密集成&#xff0c;但實際上它可以在任何Python項目中使用&#xff0c;為開發者提供簡單而高效的緩存解決方案。 在現代應用開發中&#xff0c;性能優化至關…

android開發:zxing-android-embedded豎屏掃描功能

Android 點擊按鈕調用豎屏二維碼掃描 提示&#xff1a;zxing-android-embedded插件已過時&#xff0c;建議更換別的。 場景&#xff1a;Home頁面上有個掃描按鈕&#xff0c;點擊后打開攝像頭完成掃描功能&#xff0c;掃描時要求豎屏。 方案&#xff1a;使用zxing-android-embe…