數據結構之 【樹的簡介】(樹的(相關)概念、二叉樹的概念、部分性質、滿二叉樹、完全二叉樹)

目錄

1.樹的概念及結構

1.1樹的概念

1.2樹的相關概念

1.3樹的表示?

?1.4樹在實際中的應用

2.二叉樹概念及結構?

2.1二叉樹的概念

2.2特殊的二叉樹?

2.3二叉樹的性質?

2.4應用題?


1.樹的概念及結構

1.1樹的概念

樹是一種非線性的數據結構,由?n(n≥0)個有限節點構成,這些節點按照層次關系組織成一個集合。之所以將其命名為“樹”,是因為它的形態恰似一棵倒置的樹——根在上,枝葉在下

樹是由根節點和子樹構成的,因此樹是遞歸定義的?

樹形結構中,子樹之間不能有交集,否則就不是樹形結構?

1.2樹的相關概念

節點的度:一個節點含有的子樹的個數稱為該節點的度; 如上圖:A的為6

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

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

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

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

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

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

節點的層次:從根開始定義起,根為第1層,根的子節點為第2層,以此類推;

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

堂兄弟節點:雙親在同一層且彼此不是兄弟節點的節點;如上圖:H、I互為兄弟節點

節點的祖先:從根到該節點所經分支上的所有節點;如上圖:A是所有節點的祖先

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

森林:由m(m>0)棵互不相交的樹的集合稱為森林?

1.3樹的表示?

在表示樹時,一個節點的度一般是不確定的,所以存儲起來就比較麻煩

既要保存值域,也要保存結點和結點之間的關系,常用的表示方式是:孩子兄弟表示法

typedef int DataType;struct Node{struct Node* _firstChild1;    //指向第一個孩子結點struct Node* _pNextBrother;   // 指向其下一個兄弟結點DataType _data;               //結點中的數據
}

?A沒有兄弟節點,?_pNextBrother指向空,然后只需要讓_firstChild1指向B節點

B節點中的_pNextBrother就可以指向C,如此往復

想要增加B的兄弟節點,就在C后面尾插,想要增加B的子節點,就在E后面尾插

這種左孩子右兄弟的表示方法有效解決了未知度的問題 ,可以表示任意形狀和度的樹結構

?1.4樹在實際中的應用

在Windows操作系統中,D盤類似于樹結構中的根節點

D盤中的文件夾形成層次結構,每個文件夾可以包含其他文件夾和文件,類似于樹結構中的子樹

文件在樹結構中通常被視為葉節點,因為它們不包含其他子節點

2.二叉樹概念及結構?

2.1二叉樹的概念

一棵二叉樹是結點的一個有限集合,該集合:

1. 或者為空 2. 由一個根節點加上兩棵分別稱為左子樹和右子樹的二叉樹組成

從上圖可以看出

1. 二叉樹不存在度大于2的結點

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

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

2.2特殊的二叉樹?

1. 滿二叉樹:一棵層數(高度)≥1的二叉樹,

其中所有非葉子節點都有兩個子節點,且所有葉子節點位于同一層

2.完全二叉樹:一棵高度為?K?的二叉樹,其前?K?1?層均為滿二叉樹結構,且第?K?層的所有節點均從左至右連續排列,無間隔缺失

所以,滿二叉樹是特殊的完全二叉樹

2.3二叉樹的性質?

1. 若規定根節點的層數為1,則一棵非空二叉樹的第i層上最多有2^(i - 1) 個結點.

2. 若規定根節點的層數為1,則深度為h的二叉樹的最大結點數是2^h - 1

3. 對任何一棵非空二叉樹, 如果度為0的葉結點個數為N0 , 度為2的分支結點個數為N2,

則? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?N0=N2+1

4.一棵K層的完全二叉樹的節點個數范圍 [ 2^(k-1) , 2^k -1 ]

5.完全二叉樹中,?度數為1的節點個數?N1??只能是 0 或 1

4. 若規定根節點的層數為1,具有n個結點的滿二叉樹的深度,h= ,則有h = log?(n + 1).

(ps:log?(n + 1)?是log以2 為底,n+1為對數)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2^h - 1 = n? ? ? ? ??h = log?(n + 1)

5. 對于具有n個結點的完全二叉樹,如果按照從上至下從左至右的數組順序對所有節點從0開始編號,則對 于序號為i的結點有?

1. 若i>0,i位置節點的雙親序號:(i-1)/2;(計算機自動向下取整)

i=0,i為根節點編號,無雙親節點

2. 若2i+1 < n, 左孩子序號:2i+1?若 2i+1 >= n 否則無左孩子

3. 若2i+2 < n, 右孩子序號:2i+2 若 2i+2 >= n 否則無右孩子

如圖所示,

?節點下標的2倍+1為該節點的左孩子的下標,

節點下標的2倍+2為該節點的左孩子的下標

子節點下標-1除以2(計算機自動向下取整),得到子節點的父親節點的下標

2.4應用題?

1. 某二叉樹共有 399 個結點,其中有 199 個度為 2 的結點,則該二叉樹中的葉子結點數為()

A 不存在這樣的二叉樹

B 200

C 198

D 199

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?運用公式 N0=N2+1

3.在具有 2n 個結點的完全二叉樹中,葉子結點個數為( )

A n

B n+1

C n-1

D n/2

? ? ? ? ? ? ? ?N0=N2+1? ? ? ?2n=N0+N2+N1? ? ? ? ?完全二叉樹中N1= 1或0

4.一棵完全二叉樹的節點數位為531個,那么這棵樹的高度為( )

A 11

B 10

C 8

D 12

? ? 2^9 = 512? ? ? ? ? 2^10 = 1024

5.一個具有767個節點的完全二叉樹,其葉子節點個數為()

A 383

B 384

C 385

D 386

?N0=N2+1? ? ? ?767=N0+N2+N1? ? ? ? ?完全二叉樹中N1= 1或0

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

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

相關文章

Redis-7.4.3-Windows-x64下載安裝使用

Redis軟件包下載地址鏈接&#xff1a;https://github.com/redis-windows/redis-windows/releases 檢查或者修改配置文件redis.conf&#xff1a; #如果允許外部其他主機訪問本機redis&#xff0c;設置成&#xff1a;bind 0.0.0.0 bind 127.0.0.1 protected-mode yes #設置端口…

Educational Codeforces Round 180 (Rated for Div. 2)

AB 略 C 對于axayaz>max(2*az,an)&#xff0c;枚舉y z 二分x D 首先&#xff0c;長度為1的邊的已經有n-1條&#xff0c;那么構造的圖中只能存在一條長度為2的好邊。我們先構造出一個圖只存在n-1條好邊&#xff0c;我們發現對于一個點所有連接它的邊要不均指向它要不均背…

CAD文件處理控件Aspose.CAD教程:在 Python 中將 DGN 文件轉換為 PDF

概述 將DGN文件轉換為PDF對許多行業至關重要&#xff0c;包括工程和建筑行業。能夠輕松地以 PDF 格式共享設計&#xff0c;增強協作和可訪問性。通過使用Aspose.CAD for Python via .NET的強大功能&#xff0c;開發人員可以高效地自動化此過程。這款 CAD 轉換器 SDK 簡化了轉換…

寧德時代攜手問界,以“廠中廠”模式加速擴產

6月30日&#xff0c;寧德時代在賽力斯超級工廠的兩條CTP2.0高端電池包產線正式投產。這是寧德時代在重慶布局的首個基地&#xff0c;并首次采用“廠中廠”合作模式&#xff0c;為問界系列車型本地化生產供應動力電池系統。重慶市、四川省廣安市有關負責人&#xff0c;賽力斯集團…

工作中常用的Git操作命令(一)

說明 時間過得真快&#xff0c;一轉眼嗎嘍也是好歹工作幾年了&#xff0c;把這些年平時用的git命令整理記錄一下&#xff0c;分幾個文章&#xff0c;囊括了常用的命令&#xff0c;工作日常很多時候都是使用svn&#xff0c;回到宿舍自己的項目才是git&#xff0c;就問你離不離譜…

2.2.5 Windows系統日志管理

文章目錄 一、試題及考試說明二、操作步驟1. 在計算機策略中&#xff0c;啟用安裝程序的日志記錄&#xff0c;并且配置日志大小最大10M&#xff0c;日志存儲位置為D:\kaoshi_3\2.2.5\&#xff1b;2. 查詢安全日志中登錄失敗的日志信息&#xff0c;并導出保存在D:\kaoshi_3\2.2.…

AiPy實戰(7):一鍵生成天氣組件,解放UI設計的雙手

在傳統 UI 開發流程中&#xff0c;界面設計與實現往往是一項高度依賴人工投入的系統性工作。從頁面布局架構搭建、圖標元素精確定位&#xff0c;到響應式設計適配&#xff0c;僅基礎樣式表&#xff08;CSS&#xff09;的編寫就可能涉及數十行甚至上百行代碼。? 隨著智能開發工…

解讀32頁大數據中心運營管理整體規劃方案【附全文閱讀】

該文檔為大數據中心運營管理整體規劃方案&#xff0c;聚焦于構建高效規范的運營管理體系。方案提出以 “敏前臺、穩中臺、強后臺” 為框架&#xff0c;構建覆蓋全角色、全過程、全周期、全要素的一體化 IT 運營管控體系&#xff0c;采用 “11N” 運營模式&#xff0c;明確業主、…

Pyhton-EXCEL與Mysql數據對比

該段代碼主要實現從數據庫和 Excel 文件中讀取數據&#xff0c;并對兩者進行字段匹配&#xff0c;最終找出 Excel 中未匹配到的數據庫記錄。功能如下&#xff1a; [sqlSelect()]&#xff1a;連接 MySQL 數據庫并查詢比價單及其商品信息。[BiJiaDaoChu()]&#xff1a;調用外部 …

InnoDB索引

1、索引的建立 / 數據的存儲 一條條數據存儲到頁中后&#xff0c;各個數據頁組成了一個雙向鏈表&#xff0c;而每個數據頁中的記錄會按照主鍵值從小到大的順序組成一個單向鏈表。此時&#xff0c;如果我想根據主鍵值查詢一條記錄&#xff0c;只能從第一個數據頁開始一個頁一個頁…

[考研408數據結構]王道大題暑假自用復習記錄(每日更新...)

DAY1 2025年6月29日 雨轉晴&#x1f327;&#x1f324; 第二章 線性表 2.2線性表的順序表示 1、從順序表中刪除具有最小值的元素&#xff08;假設唯一&#xff09;并由函數返回被刪元素的值。空出的位置由最后一個元素填補&#xff0c;若順序表為空&#xff0c;則顯示出錯信…

vue2 el-select下拉選擇框 點擊其他位置或者彈窗關閉下拉框/點擊取消時,下拉框變成之前的值

1.elSelect點擊空白處無法收起下拉框&#xff08;失去焦點并隱藏&#xff09; // 定義指令 directives: {clickOutside: {bind: function (el, binding, vnode) {el.clickOutsideEvent function (event) { // here I check that click was outside the el and his childrensif…

MYSQL-JAVAweb1

1.登錄 在黑框中輸入 net start mysql // 啟動mysql服務 net stop mysql // 停止mysql服務1.MySQL數據模型 關系型數據庫&#xff1a; 關系型數據庫是建立在關系模型基礎上的數據庫&#xff0c;簡單說&#xff0c;關系型數據庫是由多張能互相連接的 二維表 組成的數據庫 如…

將POD指定具體機器上運行

在Kubernetes中&#xff0c;你可以通過多種方式將Pod調度到指定的節點&#xff08;機器&#xff09;上運行。以下是幾種常用的方法及其適用場景&#xff1a; 1. NodeSelector&#xff08;簡單標簽匹配&#xff09; 通過標簽選擇器將Pod綁定到具有特定標簽的節點。 步驟 為目…

eNSP實驗一:IPv4編址及IPv4路由基礎

一、實驗目的&#xff1a; 配置各路由器上的物理接口的IP地址并實現互聯互通配置各路由器的 Loopback 的IP地址并實現互聯互通&#xff08;包括備份路由&#xff0c;默認路由&#xff09;圖中三個路由器型號為 AR3620。 二、配置物理接口ip 基礎配置 設備命名<Huawei>…

基于自然語言處理(NLP)的Twitter情感分析系統

本課題致力于構建一個基于自然語言處理&#xff08;NLP&#xff09;與機器學習技術的Twitter情感分析系統&#xff0c;旨在自動識別用戶推文中的主觀情緒傾向&#xff0c;如正面、負面或中性。研究過程中將對海量Twitter文本數據進行預處理&#xff0c;包括去除噪聲、分詞、詞性…

H.264中片數據分割(Slice Data Partitioning)介紹

H.264中**片數據分割&#xff08;Slice Data Partitioning&#xff09;**的解碼機制。讓我為您詳細解析&#xff1a; 1. 片數據&#xff08;Slice Data Partitioning&#xff09;分割的概念 片數據分割是H.264中的一種錯誤恢復機制&#xff0c;通過將片數據分成不同的部分&am…

muduo

好的&#xff0c;我們來深入剖析陳碩老師開發的著名C網絡庫——muduo。它以“簡單、高效、易用”著稱&#xff0c;是學習Linux C高性能網絡編程的絕佳范本。我會盡量詳細、通俗地講解其核心思想、關鍵組件、源碼結構和工作原理。 核心思想&#xff1a;Reactor 模式 (Non-block…

將目錄下所有圖像中非0像素值改為1或者255

圖像二值化處理技術大綱 目標與背景 解釋圖像二值化的意義,分析將非零像素值統一調整為1或255的應用場景(如簡化數據、增強特征、適配模型輸入等)。 核心方法概述 列舉常見圖像格式(如PNG、JPEG)的像素值范圍,說明非零像素的定義(RGB或灰度圖像中的非黑像素)。 方…

Reactor ConnectableFlux支持多訂閱者

在 Reactor 中&#xff0c;ConnectableFlux 是一種用于處理響應式流的機制&#xff0c;它允許你控制何時開始訂閱和數據生成。通常情況下&#xff0c;訂閱者&#xff08;subscriber&#xff09;在訂閱時會立即開始接收數據&#xff0c;但有時你可能希望多個訂閱者“會面”&…