二叉树的相关知识

news2025/1/17 23:09:19

1.树概念及结构

1.1树的概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因
为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
有一个特殊的结点,称为根结点,根节点没有前驱结点
除根节点外,其余结点被分成M(M>0)个互不相交的集合T1、T2、……、Tm,其中每一个集合Ti(1<= i
<= m)又是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有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)棵互不相交的树的集合称为森林

2.二叉树概念及结构

一棵二叉树是结点的一个有限集合,该集合:

  1. 或者为空
  2. 由一个根节点加上两棵别称为左子树和右子树的二叉树组成

注意
1.二叉树不存在度大于2的结点
2. 二叉树的子树有左右之分,次序不能颠倒,因此二叉树是有序树

2.1特殊的二叉树:

  1. 满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是
    说,如果一个二叉树的层数为K,且结点总数是 ,则它就是满二叉树。
  2. 完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K
    的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对
    应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树注意:完全二叉树必须是先有左孩子再有右孩子,如果它的某一个节点只有一个孩子,那么这个孩子一定是左孩子

一些规律和性质

一个满二叉树的第i层有多少个节点

答案:== 2(i-1) ==

画出图形即可找出规律
在这里插入图片描述

深度为h的二叉树的最大节点数是多少

深度为h,翻译一下就是有h层,就是求一个h层的二叉树最大的节点数,要节点数最大,那就得是满二叉树,
在这里插入图片描述
所以规律就是:整个树(满二叉树)的节点数为:2h-1

完全二叉树的节点的范围

完全二叉树节点最多的情况就相当于满二叉树,所以最多节点数为 2h-1
节点数最小的情况是:2h-1

父子下标之间的关系

在这里插入图片描述

以上图为例子:
我们可以找出这样的规律:
1.通过父节点的下标找到子节点
左孩子 = 父节点的下标 * 2 + 1
右孩子 = 父节点的下标 * 2 + 2

2.通过左右孩子节点的下标找到父节点的下标
父节点的下标 = (左孩子的下标-1 )/ 2
父节点的下标 = (右孩子的下标-2 )/ 2
但是:由于操作符/的特性,即:只保留商;
所以:不管你是左孩子还是右孩子,都可以用这一个公式:父节点的下标 = (孩子的下标-1 )/ 2 来计算出父节点的下标

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

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

相关文章

Typora Mac版本安装 Pandoc 导出文件为word格式(windows可通用)

今天在和一位商务小伙伴对接的时候&#xff0c;需要提供一份 word 版本的初稿。对于习惯了使用 支持 markdown 语法的 typora 来说&#xff0c;复制粘贴到 word 是不可能的。 可以通过 “导出” 功能&#xff0c;选择将当前文件导出为 “word” 格式&#xff0c;这个过程有个小…

通过CSS实现炫酷效果,让你的网页不再平淡无奇

通过CSS实现炫酷效果&#xff0c;让你的网页不再平淡无奇 (一)CSS基础1.1CSS介绍1.2CSS样式1.3CSS 格式 &#xff08;二&#xff09;CSS 选择器2.1标签选择器2.2类选择器2.3层级选择器2.4id选择器2.5组选择器2.6伪类选择器2.7通配符选择器 &#xff08;三&#xff09;样式表引入…

【自然语言处理】 - 作业3: 文本情感分析

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

C++的继承

继承 1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6. 继承与静态成员7.复杂的菱形继承及菱形虚拟继承 1.继承的概念及…

舒适交友 - 什么样的婚姻最舒服 稳态婚姻

人人都是心理学家,mbti等_个人渣记录仅为自己搜索用的博客-CSDN博客 人生两大目标: 生产力提升 让身边的人快乐. 激动 兴奋 不一定 舒适 开心 幸福 安全感 平静 宁静 祥和 婚姻 稳态 041 探秘“情绪”——如何确定只有六种基本情绪&#xff1f; - 知乎 ( 6种原始情绪&am…

chatgpt赋能Python-python_dilate

Python中的dilate操作&#xff1a;了解该操作及其应用 在计算机视觉领域&#xff0c;dilate操作是一种常用的图像处理技术。在Python中&#xff0c;我们可以使用OpenCV库来实现dilate操作。本文将介绍dilate操作的基本概念&#xff0c;讨论其应用及如何使用Python进行实现。 …

C++爱好者的自我修养(13.1):一维数组——简介,声明,初始化(赋值)

文章目录 1.什么是数组&#xff1f;2.数组的声明2.1格式2.2特别注意&#xff1a;有效下标值的重要性 3.数组的初始化&#xff08;赋值&#xff09;3.1格式3.2 C11新增的初始化方法规则功能3.2.1 等号的省略3.2.2 当大括号内无东西3.2.3 禁止缩窄转换 1.什么是数组&#xff1f; …

Kafka实时数据同步

目录 1 概述 2 捕获Oracle数据到Kafka 2.1 数据捕获设置 2.2 数据发布任务设置 2.3 捕获到发布数据流映射 2.4 查看任务执行日志 3 订阅Kafka数据到ClickHouse 3.1 数据订阅设置 3.2 数据加载设置 3.3 订阅到加载数据流映射 3.4 查看任务执行日志 4 校验数据一致性 …

GEE:GEDI数据提取值到矢量区域和点

作者:CSDN @ _养乐多_ 本文将介绍GEDI数据集从GEE上下载到本地,并将每一个激光点的值提取为一个矢量区域,并提取值到矢量区域的方法。 文章目录 一、GEDI数据下载二、GEDI数据栅格矢量化三、提取值到区域四、提取栅格值到点五、空间插值一、GEDI数据下载 GEDI数据下载链接:…

80个Python练手小项目;AI开发者的总结与反思;B站免费Stable Diffusion视频教程;五问ChatGPT+医学影像 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『美团大模型已秘密研发数月』在仅剩一年的窗口期里努力奔跑 5月18日下午&#xff0c;美团内部召开大模型技术分享会&#xff0c;美团…

【深度学习】- 作业5: Didi交通场景-车辆预测

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

ONVIF协议了解

第一部分:ONVIF理论基础 一&#xff0e; 为什么要用ONVIF协议&#xff1a; IPC厂商主流的遵循的是RTSP协议进行推流&#xff0c;那么RTSP最重要的就是RTSP的URL地址。但是各个厂商的URL地址格式都不一样&#xff0c;所以就诞生了一个标注协议—ONVIF。ONVIF协议的出现&#x…

开源赋能 普惠未来|QUICKPOOL诚邀您参与2023开放原子全球开源峰会

QUICKPOOL算力调度系统的诞生和发展&#xff0c;为广大的算力领域从业者和技术开发者&#xff0c;提供了一条中国技术路线&#xff0c;并与IBM LSF、SLURM、PBS、SGE等产品&#xff0c;共同助力全球算力发展。QUICKPOOL算力调度系统成熟、稳定&#xff0c;具备“超算&智算”…

MATLAB 搜索某一点的K邻近点(12)

MATLAB 搜索某一点的K邻近点(12) 前言一、算法介绍1.1 :无序点云的K邻近点搜索1.2 :有序点云的K邻近点搜索二、具体实现示例2.1 算法一 (含详细注释)2.2 算法二 (含详细注释)前言 在点云处理中,最基本的算法之一就是搜索某一点的近邻点(1个最近或多个邻近),这在重…

MySQL数据库学习笔记(八)实验课五之数据库系统设计

一上来就实验课五了&#xff0c;实验课四呢&#xff1f;实验课四的内容是添加索引&#xff0c;差不多就是那样。 这次实验课的内容感觉就有点硬核了&#xff0c;数据库系统设计。 重点&#xff1a; 记录下我在实验里面遇到的一些问题 1&#xff0c;E-R图绘制 我是用drawio绘…

Rancher1.6高可用架构设计与实现思路

文章目录 [toc] 1.架构图2.建立数据导入脚本2.1 单机运行命令2.2 导出单机容器中的数据库文件2.3 dump文件 3.启动命令4.总结 1.架构图 架构说明&#xff1a;本文重点是rancher1.6.17的多实例共用一个数据库持久化数据&#xff0c;对于前置的负载均衡和mysql5.7的高可用不做过多…

linux 框架学习法

学习视频&#xff1a;【北京迅为】再谈Linux学习方法-框架学习法 学习UBOOT 框架学习法 linux基础框架 文件系统框架 bootloader是上电后执行的第一个程序bootloader会引导linux内核&#xff0c;会执行zimagelinux内核会挂载文件系统&#xff0c;文件系统可大可小&#xff0c;…

Go语言gin框架项目:按模板导出excel并在网页端下载,并将此接口完成swagger的配置

1.需求 甲方的需求是以这种格式导出一个开工通知单 前端页面是这个样子&#xff1a; 前端勾选一部分部室&#xff0c;后端根据勾选的这些部室名称进行查询&#xff0c;将查询到的部室主任名字填充到表格对应的位置中&#xff0c;另外将前端传过来的信息都填充到表格的指定位置…

4.1 一级存储结构

本节介绍 GPU 上的一级缓存结构&#xff0c;重点介绍统一的 L1 数据缓存和暂存器“共享内存”&#xff0c;以及它们如何与计算核心交互。 我们还简要讨论了 L1 纹理缓存的典型微架构。 我们包括对纹理缓存的讨论&#xff0c;虽然它在 GPU 计算应用程序中的使用有限&#xff0c;…

前端GC垃圾回收机制

js中的管理是自动的&#xff0c;对象不再被引用时就是垃圾&#xff0c;不能从根上访问时也是垃圾。 能够访问到的对象就是可达对象&#xff08;引用&#xff0c;作用域链&#xff09;&#xff0c;可达的标准就是从根触发是否能够被找到&#xff0c;根可以理解为是全局变量。 …