数据结构和算法-树和二叉树的定义和基本术语和性质

文章目录

  • 树的基本概念和相关术语
    • 相关的应用
    • 节点间的关系描述
    • 节点,树的属性描述
    • 有序树vs无序树
    • 树vs森林
    • 小结
  • 树的相关性质
    • 考点1
    • 考点2
    • 考点3
    • 考点4
    • 考点5
    • 考点6
    • 小结
  • 二叉树的相关概念和基本术语
    • 重要 (五种状态)
    • 特殊二叉树
    • 小结
  • 二叉树的相关性质
    • 二叉树考点1
    • 二叉树考点2
    • 二叉树考点3
    • 完全二叉树考点1
    • 小结

树的基本概念和相关术语

在这里插入图片描述

当存在非根节点有两个前驱或者没有前驱时,都不构成树

在这里插入图片描述
任何非空树可以看作根节点和不相交的子树构成(子树可为空树)

在这里插入图片描述

相关的应用

在这里插入图片描述

节点间的关系描述

  • 祖先节点:节点以上的节点都是祖先节点
  • 子孙节点:节点一下的节点都是子孙节点
  • 双亲节点(父节点):节点的上一个节点是双亲节点
  • 兄弟节点:双亲节点相同的子孙节点
  • 堂兄弟节点:emmm有点不好说,就是同一层的节点但不包括兄弟节点,如图中的 你 G H I J

在这里插入图片描述

节点的深度(层次)可以从零开始,也可以从一开始,默认是一(高度也一样)
高度和深度相反,从字面意思应该就能理解

节点,树的属性描述

在这里插入图片描述

有序树vs无序树

有序无序看存啥吧,看你想用左右位置反映啥关系不
在这里插入图片描述

树vs森林

树的节点可以为0,即空树,森林也可以由0棵树构成,即空森林
在这里插入图片描述

小结

在这里插入图片描述

树的相关性质

树的节点数=树的所有节点的度数+1
可以这么理解
某层节点的度数和相当于下一层节点的节点数,如下图
有四层时,一二三四层的度数和相当于二三四层的节点数和(四层的度数和为零),但树的节点数还包括根节点,而一二三四层的度数和没有包括第一层的节点数,而第一层节点数为1。
所以树的节点数=树的所有节点的度数+1

考点1

在这里插入图片描述

考点2

m叉树可以为空树
在这里插入图片描述

考点3

在这里插入图片描述

考点4

在这里插入图片描述

考点5

在这里插入图片描述
这里是先设高度最小为h则可以列出此时对应的节点数应该是大于前h-1层最多的节点数的,不然不可能还会有第h层嘛,然后此时n不可能比h层最多的节点数还多嘛,不然就有h+1层了,可以列出不等式,化简。

最后的话因为h是整数,h又必须大于图中的那个log啥的,h又要求最小,所以那个log啥的得向上取整就是h的最小值

考点6

在这里插入图片描述

小结

在这里插入图片描述

二叉树的相关概念和基本术语

二叉树有序且每个节点至多两课子树(可为空子树)
在这里插入图片描述

重要 (五种状态)

在这里插入图片描述

特殊二叉树

完全二叉树:节点与对应的满二叉树节点一一对应
完全二叉树最多只有一个度为1的节点,如果有两个,则意味这两个度为1的节点的孩子之间相隔了一个节点,那么将不满足节点与对应的满二叉树节点一一对应的条件
在这里插入图片描述

如果完全二叉树某节点只有一个孩子,那么一定是左孩子

二叉排序树即左孩子上存储的值小于父节点上存储的值小于右孩子上存储的值
在这里插入图片描述
当二叉排序树是平衡二叉树时,那么搜索的深度更小,效率更高。因为比较次数少了

在这里插入图片描述

小结

在这里插入图片描述

二叉树的相关性质

总度数=度为1的结点数1+度为2的结点数2

二叉树考点1

在这里插入图片描述

二叉树考点2

在这里插入图片描述

二叉树考点3

在这里插入图片描述

完全二叉树考点1

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

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

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

相关文章

css深度选择器>>>、/deep/ 、::v-deep 、:deep()

很多vue的组件库 , 如vant,elementUI, iview等都可能自定义样式。 如项目中用到了 elementui,如果使用预处理器 scss, sass,less , 修改样式可能修改不掉, 而且这种需求出现的频率非常高。但如果去掉scoped话又会影响全局样式。当然我们知道可…

设计模式之美学习笔记-理论篇1-面向对象的特性

一、设计模式前言 面向对象 主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向对象编程语言。大部分项目也都是基于面向对象编程风格开发的。面向对…

中职组网络安全-FTPServer20221010.img(环境+解析)

任务环境说明: √服务器场景:FTPServer20221010.img √服务器操作系统:未知(关闭链接) √FTP用户名:attack817 密码:attack817 1.分析attack.pcapng数据包文件,通过分析数据包attack…

elasticsearch聚合、自动补全、数据同步

目录 一、数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法 1.3 RestAPI实现聚合 二、自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 RestAPI实现自动补全 三、数据同步3.1 思路分析3.1.1 同…

哈希表Leetcode 1657. 确定两个字符串是否接近

如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : 操作 1:交换任意两个 现有 字符。 例如,abcde -> aecdb操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另…

PCP的Parallel Repetition

1. 引言 见Alessandro Chiesa等人2023年论文《On Parallel Repetition of PCPs》。 Parallel Repetition(并行重复)可用于: 降低probabilistic proofs的soundness error 的同时提升某些衡量指标的效率 interactive proofs(IPs…

模型层——多表操作

多表操作 一 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄。 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息。作者详情模型和作…

YOLOv5全网独家首发改进:SENetv2,Squeeze-Excitation模块融合Dense Layer,效果秒杀SENet

💡💡💡本文自研创新改进:SENet v2,针对SENet主要优化点,提出新颖的多分支Dense Layer,并与Squeeze-Excitation网络模块高效融合,融合增强了网络捕获通道模式和全局知识的能力 推荐指数:五星 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/catego…

项目申请书撰写【笔记】

撰写项目申请书需要良好的科技写作技能。好的项目申请书应该条理清 晰、逻辑严密。整份申请 书要有清晰的结构,每部分都有特定的功能,让项目评审人觉得一目了 然。每一段话也要有特定的功能,表达要有层次和递进。要注意起承转合、文脉通畅&am…

【24押题卷】小马哥终极押题3+1!

告别11月,迎接12月!说来也是缘分,各平台发了快200套真题,梳理了6本教材课后习题,讲解了吴大正、郑君里、奥本三本重点习题。终于我“悟了”,你们会发现,我今年做的每一套真题解析,几…

Linux Ubuntu protobuf 安装方法

文章目录 安装方法检验安装意外状况 安装方法 去GitHub官网找下载地址 安装 protobuf 21.11 GitHub 资源地址 选择安装版本 (是一个URL网址) 例如这里选用:protobuf-all-21.11.zip 资源 安装依赖库,执行指令 6. sudo apt-get …

【Node.js】笔记整理4 - 版本管理工具nvm

写在最前:跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识,需要格外注重实战和官方技术文档,文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

毕业项目分享

大家好,今天给大家分享112个有趣的Python实战项目,可以直接拿来实战练习,涵盖机器学习、爬虫、数据分析、数据可视化、大数据等内容,建议关注、收藏。 项目名称 主要技术 2023招聘数据分析可视化系统爬虫 7种薪资预测模型 Flas…

【JAVA面向对象编程】--- 探索子类如何继承父类

🌈个人主页: Aileen_0v0🔥学习专栏: Java学习系列专栏 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 继承 继承的普通成员方法调用 及 普通成员变量修改 构造方法的调用 子类构造方法 继承 package Inherit;class Animal …

如何制作一个数字人?流程是怎样的?

​​虚拟人概念从早期动漫领域的初音未来用一首《甩葱歌》让绿色双马尾的“歌姬”形象火出圈,到洛天依登上央视春晚舞台,再到众多虚拟歌手、虚拟主播、KOL、代言人等活跃于各种情境中。 去年以来,元宇宙和虚拟人技术进入全球科技产业的聚光灯…

笔记二十二、使用路由state进行传递参数

22.1 父组件设置state路由参数 <NavLink toclassify state{{param_C: this.state.name, param_D: this.state.age}} className{this.activeStyle}>classify</NavLink> 父组件 Home/index.jsx import React from "react"; import {NavLink, Outlet} from…

Day46力扣打卡

最近一直在做以前的题&#xff0c;刷题量都没有怎么增长&#xff0c;感觉自己算法一直不太行&#xff0c;但也只能菜就多练了。 打卡记录 由子序列构造的最长回文串的长度&#xff08;区间DP&#xff09; 链接 第二次刷这道题&#xff0c;相比上回思路来的很快&#xff0c;但…

IDEA maven无法下载源代码处理

1、使用idea内置maven 在idea中新增一个mvn运行项,截图如下: 输入命令: dependency:resolve -Dclassifiersources 2、如果外部maven&#xff0c;不使用idea内部maven 在工程目录下命令行执行命令: mvn dependency:resolve -Dclassifiersources

Golang实践录:读取xml配置文件

本文对 xml 文件进行解析。 概述 某项目涉及到数据传输&#xff0c;我负责运行在工控机的客户端。实际上&#xff0c;工控机已经有了作为“数据传输”角色的程序&#xff0c;已经 worked 了很多年&#xff0c;从工程较多处出现的func_<年份>来看&#xff0c;年龄不小于已…

Linux信号超详细剖析

预备知识&#xff1a; 一、信号产生(OS发给进程) 1、键盘组合键 Linux中&#xff0c;一次登录对应一个终端&#xff0c;bash/shell。且只允许一个进程是前台进程&#xff0c;默认就是bash/shell&#xff0c;其它都是后台进程。获取键盘输入的是前台进程。 Ctrlc: 向前台进程…