數據結構【樹和二叉樹】

樹和二叉樹

  • 前言
  • 1.樹
    • 1.1樹的概念和結構
    • 1.2樹的相關術語
    • 1.3樹的表示方法
    • 1.4 樹形結構實際運用場景
  • 2.二叉樹
    • 2.1二叉樹的概念和結構
    • 2.2二叉樹具備以下特點:
    • 2.3二叉樹分類
  • 3.滿二叉樹
  • 4.完全二叉樹
  • 5.二叉樹性質
  • 6.附:樹和二叉樹圖示

前言

歡迎蒞臨姜行運主頁
https://blog.csdn.net/2401_84320036?type=blog
歡迎指導本人數據結構專欄(https://blog.csdn.net/2401_84320036/category_12950167.html)

1.樹

1.1樹的概念和結構

定義:樹是一種非線性的數據結構,它是由 n(n>=0)個有限結點組成?個具有層次關系的集合。為什么叫樹,因為它看起來像一棵倒掛的樹。

  • 有一個特殊的結點,稱為根結點,根結點沒有前驅結點。
  • 除了根結點外,每個結點有且僅有一個父結點。
  • 子樹不相交。
  • 一棵N個結點的樹有N-1條邊。

1.2樹的相關術語

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

1.3樹的表示方法

struct TreeNode
{struct Node* child; // 左邊開始的第?個孩?結點struct Node* brother; // 指向其右邊的下?個兄弟結點int data; // 結點中的數據域
};

1.4 樹形結構實際運用場景

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

2.二叉樹

2.1二叉樹的概念和結構

在樹形結構中,常用的就是二叉樹,?棵二叉樹是結點的?個有限集合,該集合由(?個根結點加上兩棵別稱為左子樹和右用樹的二叉樹組成)或者為(空)。

2.2二叉樹具備以下特點:

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

注意:對于任意的二叉樹都是由以下幾種情況復合而成的

2.3二叉樹分類

  1. 滿二叉樹
  2. 完全二叉樹

3.滿二叉樹

一個二叉樹,如果每一層的結點數都達到最大值,則這個二叉樹就是滿二叉樹。
如果?
個?叉樹的層數為 K ,且結點總數是在這里插入圖片描述
,則它就是滿二叉樹。
等比數列計算,從二的指數從零到一計算。

4.完全二叉樹

除了最后一層,其他每層的結點個數都達到最大,最后一層結點個數不一定最大,最后一次的結點按照順序由左到右依次排列。

5.二叉樹性質

根據滿二叉樹的特點可知:
在這里插入圖片描述

6.附:樹和二叉樹圖示

在這里插入圖片描述

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

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

相關文章

css面板視覺高度

css面板視覺高度 touch拖拽 在手機端有時候會存在實現touch上拉或者下拉的樣式操作 此功能實現可以參考: https://blog.csdn.net/u012953777/article/details/147465162?spm1011.2415.3001.5331 面板視覺高度 前提需求: 1、展示端分為兩部分&…

【Linux系統】詳解Linux權限

文章目錄 前言一、學習Linux權限的鋪墊知識1.Linux的文件分類2.Linux的用戶2.1 Linux下用戶分類2.2 創建普通用戶2.3 切換用戶2.4 sudo(提升權限的指令) 二、Linux權限的概念以及修改方法1.權限的概念2.文件訪問權限 和 訪問者身份的相關修改&#xff08…

路由器的基礎配置全解析:靜態動態路由 + 華為 ENSP 命令大全

🚀 路由器的基礎配置全解析:靜態&動態路由 華為 ENSP 命令大全 🌐 路由器的基本概念📍 靜態路由配置📡 動態路由協議:RIP、OSPF、BGP🖥 華為 ENSP 路由器命令大全🔹 路由器基本…

詳細圖解 Path-SAM2: Transfer SAM2 for digital pathology semantic segmentation

? 背景動機 數字病理中的語義分割(semantic segmentation)是非常關鍵的,比如腫瘤檢測、組織分類等。SAM(Segment Anything Model)推動了通用分割的發展,但在病理圖像上表現一般。 病理圖像(Pa…

初識Redis · 哨兵機制

目錄 前言: 引入哨兵 模擬哨兵機制 配置docker環境 基于docker環境搭建哨兵環境 對比三種配置文件 編排主從節點和sentinel 主從節點 sentinel 模擬哨兵 前言: 在前文我們介紹了Redis的主從復制有一個最大的缺點就是,主節點掛了之…

HTTP header Cookie 和 Set-Cookie

RFC 6265: HTTP State Management Mechanismhttps://www.rfc-editor.org/rfc/rfc6265 Set-Cookie 響應頭 服務器使用 Set-Cookie 響應頭向客戶端&#xff08;通常是瀏覽器&#xff09;發送 Cookie。 基本格式&#xff1a; Set-Cookie: <cookie名稱><cookie值>;…

【Unity完整游戲開發案例】從0做一個太空大戰游戲

1.實現飛機移動控制 // 這個腳本實現控制飛機前后移動&#xff0c;方向由鼠標控制 //1.WS控制前后移動2.鼠標控制上下左右旋轉3.AD控制傾斜 using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerController : MonoBehav…

【C++】C++11新特性(一)

文章目錄 列表初始化initializer_list左值引用和右值引用 列表初始化 在 C98 中可以使用{}對數組或者結構體元素進行統一的列表初始值設定 struct Point {int _x;int _y; }; int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };return 0; …

小黑享受思考心流: 73. 矩陣置零

小黑代碼 class Solution:def setZeroes(self, matrix: List[List[int]]) -> None:"""Do not return anything, modify matrix in-place instead."""items []m len(matrix)n len(matrix[0])for i in range(m):for j in range(n):if not m…

精益數據分析(19/126):走出數據誤區,擁抱創業愿景

精益數據分析&#xff08;19/126&#xff09;&#xff1a;走出數據誤區&#xff0c;擁抱創業愿景 在創業與數據分析的探索之旅中&#xff0c;我們都渴望獲取更多知識&#xff0c;少走彎路。今天&#xff0c;我依然帶著和大家共同進步的想法&#xff0c;深入解讀《精益數據分析…

循環神經網絡RNN---LSTM

一、 RNN介紹 循環神經網絡&#xff08;Recurrent Neural Network&#xff0c;簡稱 RNN&#xff09;是一種專門用于處理序列數據的神經網絡&#xff0c;在自然語言處理、語音識別、時間序列預測等領域有廣泛應用。 傳統神經網絡 無法訓練出具有順序的數據。模型搭建時沒有考…

優考試V4.20機構版【附百度網盤鏈接】

優考試局域網考試系統具有強大的統計分析功能。優考試通過對考試數據進行統計分析&#xff0c;諸如考試分數分布&#xff0c;考試用時分布&#xff0c;錯排行等&#xff0c;讓你從整體上了解你的學員&#xff08;員工&#xff09;狀態&#xff0c; 同時你也可以對學員&#xff…

【Amazing晶焱科技高速 CAN Bus 傳輸與 TVS/ESD/EOS 保護,將是車用電子的生死關鍵無標題】

臺北國際車用電子展是亞洲地區重量級的車用電子科技盛會&#xff0c;聚焦于 ADAS、電動車動力系統、智慧座艙、人機界面、車聯網等領域。各大車廠與 Tier 1 供應鏈無不摩拳擦掌&#xff0c;推出最新技術與創新解決方案。 而今年&#xff0c;“智慧座艙” 無疑將成為全場焦點&am…

面試:結構體默認是對齊的嘛?如何禁止對齊?

是的。 結構體默認是對齊的?。結構體對齊是為了優化內存訪問速度和減少CPU訪問內存時的延遲。結構體對齊的規則如下&#xff1a; 某數據類型的變量存放的地址需要按有效對齊字節剩下的字節數可以被該數據類型所占字節數整除&#xff0c;char可以放在任意位置&#xff0c;int存…

如何優雅地解決AI生成內容粘貼到Word排版混亂的問題?

隨著AI工具的廣泛應用&#xff0c;越來越多人開始使用AI輔助撰寫論文、報告或博客。然而&#xff0c;當我們直接將AI生成的文本復制到Word文檔中時&#xff0c;常常會遇到排版混亂、格式異常的問題。這是因為大部分AI輸出時默認使用了Markdown格式&#xff0c;而Word對Markdown…

Golang | HashMap實現原理

HashMap是一種基于哈希表實現的鍵值對存儲結構&#xff0c;它通過哈希函數將鍵映射到數組的索引位置&#xff0c;支持高效的插入、查找和刪除操作。其核心原理如下&#xff1a; 哈希函數&#xff1a;將鍵轉換為數組索引。理想情況下&#xff0c;不同鍵應映射到不同索引&#xf…

vue3學習之防抖和節流

? 在前端開發中&#xff0c;我們經常會遇到這樣的情況&#xff1a;某些事件&#xff08;如滾動、輸入、點擊等&#xff09;會頻繁觸發&#xff0c;如果不加以控制&#xff0c;可能會導致性能問題。Vue3 中的防抖&#xff08;Debounce&#xff09;和節流&#xff08;Throttle&a…

4.2.2 MySQL索引原理以及SQL優化

文章目錄 4.2.2 MySQL索引原理以及SQL優化1. 索引與約束1. 索引是什么2. 索引的目的3. 幾種索引4. 約束1.外鍵2. 約束 vs 索引的區別 5. 索引實現1. 索引存儲2. 頁3. B樹4. B樹層高問題5. 自增id6. 聚集索引7. 輔助索引 8. innnodb體系結構1. buffer pool2. change buffer 9. 最…

【學習筆記】文件包含漏洞--本地遠程包含、偽協議、加密編碼

一、文件包含漏洞 和SQL等攻擊方式一樣&#xff0c;文件包含漏洞也是一種注入型漏洞&#xff0c;其本質就是輸入一段用戶能夠控制的腳本或者代碼&#xff0c;并讓服務端執行。 什么叫包含呢&#xff1f;以PHP為例&#xff0c;我們常常把可重復使用的函數寫入到單個文件中&…

藍橋杯 2021年模擬賽 掃雷問題

題目&#xff1a; 在一個 n 行 m 列的方格圖上有一些位置有地雷&#xff0c;另外一些位置為空。 請為每個空位置標一個整數&#xff0c;表示周圍八個相鄰的方格中有多少個地雷。 輸入描述 輸入的第一行包含兩個整數 n,m。 第 22行到第n1 行每行包含 m 個整數&#xff0c;相…