C/C++ 數據結構 —— 樹(2)

在這里插入圖片描述


在這里插入圖片描述


? 🎁個人主頁:工藤新一1

? 🔍系列專欄:C++面向對象(類和對象篇)

? 🌟心中的天空之城,終會照亮我前方的路

? 🎉歡迎大家點贊👍評論📝收藏?文章


文章目錄

  • 二叉樹
    • 一、二叉樹的概念與結構
    • 二、幾種常見的樹
      • 2.1二叉樹、滿二叉樹
      • 2.2完全二叉樹
      • 2.3二叉排序樹
      • 2.4平衡二叉樹
    • 三、二叉樹的性質

二叉樹

一、二叉樹的概念與結構

  • 樹是一種遞歸的結構

  • 在樹形結構中,我們最常用的就是二叉樹一顆二叉樹的節點是一個有限的集合,該集合由一個根節點,再加上兩顆別稱為左子樹右子樹的二叉樹組成


在這里插入圖片描述


二、幾種常見的樹

2.1二叉樹、滿二叉樹

  • 二叉樹不存在 “度” 大于 2 的節點

  • 二叉樹的子樹一定有序(有左右之分),次序不能顛倒,因此二叉樹是一顆有序樹

在這里插入圖片描述

  • 滿二叉樹(理想化的二叉樹): 二叉樹的每一層的節點達到最大值,也就是說,如果一個二叉樹的層數K ,那么其總節點數是 2k - 1,則其就為滿二叉樹

在這里插入圖片描述


在這里插入圖片描述

  • 滿二叉樹:第 K 層節點個數是 2k-1

2.2完全二叉樹

  • 滿二叉樹完全二叉樹中的子集滿二叉樹是(特殊的)完全二叉樹),其是一個效率很高的數據結構

在這里插入圖片描述

對于深度為 K ,有 n 個節點的二叉樹,當且僅當其每一個節點都與深度為 K 的滿二叉樹中編號從 1n 的節點一 一對應時(節點從左到右依次排列)稱之為完全二叉樹

在這里插入圖片描述

  • 最后一層節點個數未達到最大:完全二叉樹
  • 最后一層節點個數達到最大:即是完全二叉樹,又是滿二叉樹

在這里插入圖片描述


在這里插入圖片描述


  • 完全二叉樹

在這里插入圖片描述


  • 非完全二叉樹

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳


外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳


2.3二叉排序樹

常用于非重復元素的排序、搜索;對二叉排序樹進行左中右遍歷可以獲取到有序的元素串

在這里插入圖片描述


在這里插入圖片描述


2.4平衡二叉樹

在這里插入圖片描述


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

在這里插入圖片描述


三、二叉樹的性質

二叉樹 中,葉子節點個數 == 分支節點個數 + 1

在這里插入圖片描述


在這里插入圖片描述


完全二叉樹中,最多只有一個度為1的節點: n1 = 0 或 n1 = 1;

在這里插入圖片描述

因此,給定節點個數 n,即可求得 n0 n1 n2(因為 完全二叉樹特點:n1為定值)


🌟 各位看官好,我是工藤新一1呀~

🌈 愿各位心中所想,終有所致!

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

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

相關文章

EEA架構介紹

前言 本文主要對EEA架構的理解進行了記錄,以加深理解及方便后續查漏補缺。 EEA架構 硬件架構 EEA架構作用 提升算力利用率、數據統一交互,實現整車功能協同、縮短線束、降低重量、降低故障率、提升裝配自動化 EEA架構發展趨勢 分布式–>域集中式–>…

【目標跟蹤】《FastTracker: Real-Time and Accurate Visual Tracking》論文閱讀筆記

0.參考 論文:https://arxiv.org/pdf/2508.14370v1 代碼:github.com/HamidrezaHashempoor/FastTracker, huggingface.co/datasets/HamidrezaHashemp/FastTracker-Benchmark. 1.摘要 提高多目標跟蹤在多物體跟蹤上的性能(從前主要是針對行人場景做的優化)。 該方法包含兩…

C++ 內存安全與智能指針深度解析

C 內存安全與智能指針深度解析面試官考察“野指針”,實際上是在考察你對 C “資源所有權” (Ownership) 和 “生命周期管理” (Lifetime Management) 的理解。現代 C 的答案不是“如何手動避免”,而是“如何自動化管理”。第一部分:核心知識點…

Vue SFC Playground 如何正確引入 naive-ui

網羅開發(小紅書、快手、視頻號同名)大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方…

音頻轉文本技術詳解:API接口、實用示例與最佳實踐

音頻轉文本技術詳解:API接口、實用示例與最佳實踐 目錄 概述接口類型與模型說明支持的音頻格式與文件大小限制快速入門音頻轉錄(Transcription)音頻翻譯(Translation)支持的語言列表時間戳功能處理較長音頻上下文提示…

QT-布局管理器

Qt布局管理器 一、布局管理器介紹布局管理器(Layout Manager)是在圖形用戶界面(GUI)應用程序中用于自動管理和排列窗口部件(Widget)的工具。Qt 共提供了 5 種布局管理器,來幫助開發者方便地組織…

Linux CentOS 安裝 .net core 3.1

打開終端,輸入以下命令以添加 .NET Core Yum 倉庫:sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm安裝 .NET Core SDK:sudo yum install dotnet-sdk-3.1驗證安裝:dotnet --versionre…

深度剖析Spring AI源碼(三):ChatClient詳解,優雅的流式API設計

深度剖析Spring AI源碼(三):ChatClient詳解,優雅的流式API設計“The best APIs are those that make simple things simple and complex things possible.” —— Alan Kay (計算機科學巨匠) Spring AI的ChatClient API正是這句話…

C語言基礎:(二十五)預處理詳解

目錄 前言 一、預處理符號 二、#define 定義常量 三、#define 定義宏 四、帶有副作用的宏參數 五、宏替換的規則 六、宏函數對比 七、# 和 ## 7.1 #運算符 7.2 ##運算符 八、命名約定 九、#undef 十、命令行定義 十一、條件編譯 十二、頭文件的包含 12.1 頭…

本地文件夾即時變身 Web 服務器(文件服務器)

一:http-server npm install --global http-server 使用,在一個目錄下打開 cmd http-server [path] [options] [path] defaults to ./public if the folder exists, and ./ otherwise. 可以下載文件,但是不能下載文件夾。 二:…

Golang云端編程入門指南:前沿框架與技術全景解析

Golang云端編程入門指南:前沿框架與技術全景解析 1 引言:Go語言在云原生時代的優勢 Go語言(Golang)由Google開發,憑借其簡潔的語法、卓越的并發性能和高效的編譯速度,已成為云端應用開發的首選語言之一。…

藍凌EKP產品:從 XML 到 JSON ——表單存儲的性能優化實踐

1. 背景介紹藍凌 EKP 的表單引擎,是整個低代碼平臺的核心能力之一。它不僅僅是“存儲表單”,更是 企業級應用快速構建的基礎設施。它支持各種復雜表單配置(字段、布局、校驗、權限、聯動、子表單)。它能靈活綁定流程,實…

STM32高級定時器-輸出比較模式

一.輸出比較原理1.輸出比較 通過定時器的外部引腳對外輸出控制信號,將通道X(x1,2,3,4)通常設置為PWM1、PWM2模式。 2.比較寄存器 當計數器CNT和比較寄存器CCR的值相等時,輸出參考信號OCxREF的信號的極性發生改變,其中OCxREF1(高電平)稱為有效…

深入理解Unity中的`.meta`文件:以紋理文件為例

在Unity開發中,.meta文件是一個經常被提及但又容易被忽視的組成部分。這些隱藏的元數據文件在項目的穩定性和一致性中扮演著重要角色,尤其是在處理紋理文件時。本文將深入探討.meta文件的作用、內容、版本控制以及常見問題,幫助開發者更好地理…

【機器學習】3 Generative models for discrete data

本章目錄 3 Generative models for discrete data 65 3.1 Introduction 65 3.2 Bayesian concept learning 65 3.2.1 Likelihood 67 3.2.2 Prior 67 3.2.3 Posterior 68 3.2.4 Posterior predictive distribution 71 3.2.5 A more complex prior 72 3.3 The beta-binomial mod…

Gemini CLI 與 MCP 服務器:釋放本地工具的強大潛力

前言 Gemini CLI 是一款強大的命令行工具,它將 Google 的 Gemini 模型帶入了您的終端。然而,其真正的潛力在于通過 模型上下文協議(Model Context Protocol, MCP) 與外部工具集成。本文將結合兩篇關鍵文章,深入探討什…

HTTP、HTTPS 與 WebSocket 詳解

HTTP、HTTPS 與 WebSocket 詳解 在網絡通信中,HTTP、HTTPS 和 WebSocket 是三種常見的應用層協議,分別適用于不同的場景。以下從定義、特點、工作原理和適用場景等方面詳細解析: 一、HTTP(HyperText Transfer Protocol&#xff0c…

8月21日

#include "head.h"seq_p create_seq() {seq_p S(seq_p)malloc(sizeof(seq_list));if(SNULL){printf("malloc error");return NULL;}memset(S,0,sizeof(seq_list));return S; }//頭插 void insert_head(seq_p S,int value,int len) {//判NULLif(SNULL){prin…

視頻號存在爭議了...

目前實測到:視頻號里那套 爭議信息提示加AI真相雷達,已經在不少視頻下上線了(這是一個非常火爆的趨勢!)伙伴們都知道,短視頻里的觀點來得快、走得也快,很多人看完就轉發。你想想看,要…

音視頻處理工作室:實時通信的媒體層設計

在開發視頻會議、語音聊天等實時通信應用時,媒體層(Media Layer) 是整個系統的核心。它就像是一個專業的"音視頻處理工作室",負責從采集聲音畫面到最終播放的全流程。本文將通過通俗易懂的比喻,解析媒體層中…