C++数据结构X篇_13_二叉树基本概念、性质及表示法

news2024/11/15 9:53:21

文章目录

  • 1. 二叉树基本概念
    • 1.1 定义
    • 1.2 逻辑结构:
    • 1.3 基本特征
    • 1.4 基本形态:
    • 1.5 问题 :(仅做了解)
  • 2. 二叉树性质
    • 2.1 性质1:在二叉树第i层上至多有2的(i-1)次方个节点(i>0)
    • 2.2 性质2:深度为k的二叉树至多有 2的k次方-1个结点(k>0)
    • 2.3 概念解释:
      • 2.3.1 满二叉树
      • 2.3.2 `完全二叉树`(重点)
    • 2.4 性质4:具有 n 个结点的完全二叉树的深度必为 log2n+1
    • 2.5 性质5:对完全二叉树,若从上至下、从左至右编号,则编号为 i 的结点,其左孩子编号必为2i,其右孩子编号必为 2i + 1;其双亲的编号必为i/2(i=1 时为根,除外)
    • 2.6 如果不是完全二叉树咋整???
  • 3. 二叉树的表示
    • 3.1 二叉链表示法
      • 3.1.1 存储结构
      • 3.1.2 节点数据类型定义
    • 3.2 三叉链表示法
      • 3.2.1 存储结构
      • 3.2.3 节点数据类型定义

1. 二叉树基本概念

1.1 定义

n(n≥0)个结点的有限集合,由一个根结点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。

1.2 逻辑结构:

一对二(1:2)

1.3 基本特征

每个结点最多只有两棵子树( 不存在度大于 2 的结点);
左子树和右子树次序不能颇倒( 有序树)

1.4 基本形态:

在这里插入图片描述
两个节点左子树右子树一个节点 没有节点,空树

1.5 问题 :(仅做了解)

具有3个节点的二叉树可能有几种不同形态?普通树呢?

二叉树可以画出五种形态,但是普通的树只能有两种形态。

2. 二叉树性质

2.1 性质1:在二叉树第i层上至多有2的(i-1)次方个节点(i>0)

在这里插入图片描述
第三层对应最多有2的3-1个节点,也就是4个节点

2.2 性质2:深度为k的二叉树至多有 2的k次方-1个结点(k>0)

性质1案例中,最多的是有2的4次方-1个节点,即15

2.3 概念解释:

2.3.1 满二叉树

一棵深度为k 且有2的k次方-1个结点的二叉树。
特点:每层都“充满”了结点
在这里插入图片描述

2.3.2 完全二叉树(重点)

除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干节点。
在这里插入图片描述
如上图中J是变为右子树的,就不是完全二叉树(因为最后一层差的是左子树),这样就可以保证将一个数组放到一个完全二叉树是没有问题的。
理解 : k-1 层与满二叉树完全相同,第 k 层结点尽力靠左

2.4 性质4:具有 n 个结点的完全二叉树的深度必为 log2n+1

2.5 性质5:对完全二叉树,若从上至下、从左至右编号,则编号为 i 的结点,其左孩子编号必为2i,其右孩子编号必为 2i + 1;其双亲的编号必为i/2(i=1 时为根,除外)

在这里插入图片描述
使用此性质可以使用完全二叉树实现树的顺序存储。

2.6 如果不是完全二叉树咋整???

将其转换成完全二叉树即可
在这里插入图片描述

3. 二叉树的表示

3.1 二叉链表示法

一般从根结点开始存储。相应地,访问树中结点时也只能从根开始。
增加2个指针域,一个左指针指向左孩子,一个右指针指向右孩子

3.1.1 存储结构

在这里插入图片描述

3.1.2 节点数据类型定义

typedef struct BiTNode
{
  int data;
  struct BiTNode *lchild,*rchild;
} BiTNode, *BiTree;

3.2 三叉链表示法

3.2.1 存储结构

在这里插入图片描述
每个节点有三个指针域,其中两个分别指向子节点(左孩子,右孩子),还有一个指针指向该节点的父节点。

3.2.3 节点数据类型定义

typedef struct TriTNode
{
  int data;
  //左右孩子指针
  struct TriTNode *lchild,*rchild;
  struct TriTNode *parent;
} TriTNode, *TriTree;

二叉树与三叉树对比: 三叉链表示法相对于二叉链表示法,多了一个结构体指针,指向爹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1013520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 版本 GA、RC、beta等含义

GA General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。 RELEASE 正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。 Stable 稳定版,开源软件有的会用…

【方法】Excel表格如何只打印部分区域?

在工作中,我们经常需要打印Excel表格,如果只需要打印Excel表格中某一部分的数据,要怎操作呢? 下面小编来分享一下方法。 打开Excel表格后,选定需要打印的那一部分区域,然后依次点击菜单中的【文件】→【打…

Zynq UltraScale+ XCZU3EG 纯VHDL解码 IMX214 MIPI 视频,2路视频拼接输出,提供vivado工程源码和技术支持

目录 1、前言免责声明 2、我这里已有的 MIPI 编解码方案3、本 MIPI CSI2 模块性能及其优越性4、详细设计方案设计原理框图IMX214 摄像头及其配置D-PHY 模块CSI-2-RX 模块Bayer转RGB模块伽马矫正模块VDMA图像缓存Video Scaler 图像缓存DP 输出 5、vivado工程详解PL端FPGA硬件设计…

RocketMQ5.0 线上集群部署一定要注意这个OOM问题

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 RocketMQ 版本 5.1.0 背景 测试环境的RocketMQ总会在运行一段时间后,莫名其妙就挂掉,刚开始以为就是简单的内存不够导致的 因为测试环…

华为开源自研AI框架昇思MindSpore应用案例:消噪的Diffusion扩散模型

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、案例实现构建Diffusion模型位置向量ResNet/ConvNeXT块Attention模块组归一化条件U-Net正向扩散数据准备与处理采样训练过程推理过程(从模型中采样) 本文基于Hugging Face&#x…

二维码智慧门牌管理系统:信息安全与运行安全

文章目录 前言一、强大的信息数据安全二、卓越的系统运行安全性三、便捷的使用体验 前言 随着科技的迅猛发展,涉密空间信息的数据安全和保密问题日益引起广泛关注。为了解决这一问题,一款全新的二维码智慧门牌管理系统应运而生,以其强大的安…

在docker中安装MQTT教程

网上的好多关于在docker中安装MQTT教程都是错误的不完整的。这篇博客是完整的,实践过的,踩过了很多的坑得来的,欢迎大家享用! 1、首先在docker中拉取镜像 docker pull eclipse-mosquitto2、创建配置文件目录 mkdir -p /docker/…

学习Bootstrap 5的第十二天

目录 轮播 轮播所使用的类说明 创建轮播 实例 轮播图片上添加描述 实例 模态框 如何创建模态框 实例 模态框尺寸 全屏模态 实例一 实例二 模态框居中显示 实例 模态框滚动条 实例 轮播 轮播所使用的类说明 类描述.carousel创建轮播。.carousel-indicators为…

卷积神经网络中的 Full、Same 和 Valid 卷积

文章目录 卷积神经网络概述Full 卷积Same 卷积Valid 卷积卷积模式的选择代码示例结论 🎉欢迎来到AIGC人工智能专栏~卷积神经网络中的 Full、Same 和 Valid 卷积 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列…

$set小概率的赋值失败问题都被我碰上了

这用到this.$set()的方法用来更新对象中添加的键值对,发现能更新,但是点击切换不能在浏览器上显示。试好多次都没有找到问题,上百度查找发现问题出在图上的第二部,把第二步注释掉就没有问题了,就可以正常切换&#xff…

管理方法论:5. 团队发展的阶段模型——调整管理策略

概念 布鲁斯塔克曼(Bruce Tuckman)提出团队发展阶段模型。 团队发展的五个阶段是:组建期(Forming)、激荡期(Storming)、规范期(Norming)、执行期(Performing)和休整期&…

二十种实战调优MySQL性能优化的经验

老铁感觉不错的话就点个赞,文末送 [MySQL性能调优与架构设计.pdf]电子书 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关…

Jmeter——循环控制器中实现Counter计数器的次数重置

近期在使用Jmeter编写个辅助测试的脚本,用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值,使用循环实现;但第三个可变值的数量次数,是基于第二次循环中得到的结果才能确认最终次数,每次的结果…

港联证券:A股性价比已非常高 有望随基本面回升而回暖

日前,在第17届中国上市公司价值评选专家评审会暨专家研讨会上,海通证券研究所所长路颖提示出资者重视当下宏观经济以及A股市场的活跃因素。她表明,本轮库存周期或将于2023年三季度见底随后迎来上升,一起当前A股性价比已非常高&…

什么是作业指导书sop?sop作业指导书是什么意思?

现在很多生产企业都引进了sop作业指导书的概念,不过很多人却对sop不甚了解,缺乏最基本的认知,本篇就来跟大家讲一讲,到底什么是作业指导书sop,企业如何打造一份好的sop作业指导书? sop的全名是标准作业程序…

人大金仓以新兴技术加速数据管理智能化

新兴技术:数据库自治事务 引言 在当今数字化时代,数据库技术不断演进,为企业提供了更高效的数据管理和处理手段。数据库自治事务作为一项新兴技术,引起了业界的广泛关注。目前,KingbaseES自治事务技术已经成功地应用于错误日志记录…

算法-80. 删除有序数组中的重复项 II-⭐⭐

给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 提示&…

刚考过PMP想问一下怎样才能转行做PM

引言: 在当今竞争激烈的职场环境下,许多人考虑转行成为项目经理(PM),这是一个充满挑战和机遇的职业。虽然转行可能会面临一些困难,但通过采取适当的策略和技巧,你可以成功地转型为一名优秀的项目…

短视频业内有一句话:先模仿在超越

最近我在一个公众号发现了视频号爆款排行榜,这里集合了视频号的各种视频,可以帮助用户在视频号中了解目前最受欢迎和流行的内容类型。 除此之外很多人不知道这个视频号爆款排行是做什么的,主要是为了大家了解视频号的爆款数据以及为个人或者…

数据分析:小红书品牌“共情力”缔造指南

导语 “从哪来回哪去。”“你要带我回中国吗?” 8月30日,博主“煎饼果仔”、“夏天妹妹”发布自制短剧《逃出大英博物馆》,讲述一盏玉壶逃出大英博物馆寻找回国之路的故事,在发布后短时间内实现“现象级传播”。 见证现象级话题…