C/C++ 数据结构 —— 树(2)

在这里插入图片描述


在这里插入图片描述


🎁个人主页:工藤新一¹

🔍系列专栏: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为定值)


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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/94630.shtml
繁体地址,请注明出处:http://hk.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) 是整个系统的核心。它就像是一个专业的"音视频处理工作室",负责从采集声音画面到最终播放的全流程。本文将通过通俗易懂的比喻,解析媒体层中…