了解树和学习二叉树

 

1.树

1.1 概念

     树是一种 非线性 的数据结构,它是由 n n>=0 )个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 。 

注意:树形结构中,子树之间不能有交集,否则就不是树形结构  !!!

一颗N结点的树有N-1条边

 

结点的度 :一个结点含有子树的个数称为该结点的度; 如上图: A 的度为 6
树的度 :一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为 6
叶子结点或终端结点 :度为 0 的结点称为叶结点; 如上图: B C H I... 等节点为叶结点
双亲结点或父结点 :若一个结点含有子结点,则这个结点称为其子结点的父结点;如上图: A B 的父结点
孩子结点或子结点 :一个结点含有的子树的根结点称为该结点的子结点;如上图: B A 的孩子结点
根结点 :一棵树中,没有双亲结点的结点;如上图: A
结点的层次 :从根开始定义起,根为第 1 层,根的子结点为第 2 层,以此类推

 2. 二叉树(重点)

2.1 概念

     一棵二叉树是结点的一个有限集合,该集合:
        1. 或者为空
        2. 或者是由 一个根节 点加上两棵别称为 左子树 右子树 的二叉树组成

 

 二叉树的每个节点的度 <= 2

2.2  两种特殊的二叉树  

满二叉树:每层的结点数都达到最大值,就是满二叉树。(每个节点的度=2

完全二叉树:有n 个结点的二叉树,从上到下,从左到右,编号从0n-1的结点一 一对应时称之为完 全二叉树。

      满二叉树是一种特殊的完全二叉树。

2.3 二叉树的性质 

1. 若规定 根结点的层数为 1 ,则一棵 非空二叉树的第 i 层上最多有   2^(k-1)  (k>0) 个结点。
2. 若规定只有 根结点的二叉树的深度为 1, 深度为 K 的二叉树的最大结点数是 2^k - 1 (k>=0)。
3. 对任何一棵二叉树 , 如果其 叶结点个数为 n0, 度为 2 的非叶结点个数为 n2, 则有 n0 n2 1。
    (结点度为0的永远比度为2的结点多1)
4. 具有 n 个结点的完全二叉树的深度 k 为log\log 2(n+1)  上取整。
 
5. 对于具有 n 个结点的完全二叉树 ,如果按照 从上至下从左至右的顺序对所有节点从 0 开始编号 ,则对于 序号为 i 的结点有
i>0 双亲序号: (i-1)/2 i=0 i 为根结点编号 ,无双亲结点
2i+1<n ,左孩子序号: 2i+1 ,否则无左孩子
2i+2<n ,右孩子序号: 2i+2 ,否则无右孩子  

2.4 二叉树的遍历 

前序遍历和后序遍历是无法构成一棵树的!

无法确定左、右子树

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

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

相关文章

Kafka核心参数(带完善)

客户端 api Kafka提供了以下两套客户端API HighLevel(重点)LowLevel HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&#xff0c;是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管理Kafka的运行细节&#xff0c;Partition&#x…

Linux-Keepalived(VRRP协议)高可用集群搭建

Linux-Keepalived&#xff08;VRRP协议&#xff09;高可用集群搭建 一、VRRP简介1.1 什么是VRRP&#xff1f;1.2 keepalived是什么&#xff1f;1.3 keepalived工作原理 二、实操配置过程2.1 试验模型2.2. Keepalived监控和维护VRRP集群的步骤2.2.1 安装keepalived2.2.2 配置kee…

sql_lab之sqli中的head头注入,less18

报错注入中的head注入&#xff08;less-18&#xff09; 1.输入用户名和密码123 123显示登录错误 2.输入用户名和密码123’ 123显示登录错误 则证明不是普通报错注入&#xff0c;因为有用户名和密码框&#xff0c;如果不是普通报错注入则尝试head注入 3.用burp进行爆破&#x…

【已解决】在使用frp内网穿透访问VUE项目提示:Invalid Host/Origin header 解决方案

项目配置 在使用frp作为内网穿透的时候&#xff0c;配置了多端口穿透(也是第一次配置frp多端口)&#xff0c;端口配置如下&#xff1a; 8079&#xff1a;vue项目的管理系统 8080&#xff1a;vue项目的前台系统 8082&#xff1a;普通的web项目 更高frp相关问题 &#x1f4…

4.3 C++对象模型和this指针

4.3 C对象模型和this指针 4.3.1 成员变量和成员函数分开存储 在C中&#xff0c;类内的成员变量和成员函数分开存储 只有非静态成员变量才属于类的对象上 #include <iostream>class Person { public:Person() {mA 0;} //非静态成员变量占对象空间int mA;//静态成员变量…

数据预处理:多重共线性_检测和解决办法

文章目录 1.多重共线性简介&#xff08;Collinearity and Multicollinearity&#xff09;1.1 多重共线性的后果1.2 处理多重共线性问题的方法 2. 设置2.1 导入库2.2 数据集特征波士顿房价BMI 数据集 2.3 导入数据 3. 相关矩阵3.1 聚类图 4. 方差膨胀因子4.1 两种多重共线性4.2 …

外卖托管运营专家邦火策划怎么样,为您的餐厅带来了什么不同?

在当今激烈竞争的餐饮市场&#xff0c;外卖托管运营正逐渐成为许多餐厅提升业绩的有效手段。邦火策划以其专业的服务和独特的策略&#xff0c;成为外卖托管运营领域的专家。让我们一同探究&#xff0c;选择邦火策划为您的餐厅带来了怎样的不同。 在邦火策划的引领下&#xff0…

【UML】第10篇 类图(属性、操作和接口)(2/3)

目录 3.3 类的属性&#xff08;Attribute&#xff09; 3.3.1 可见性&#xff08;Visibility&#xff09; 3.3.2 属性的名称 3.3.3 数据类型 3.3.4 初始值 3.3.5 属性字符串 3.4 类的操作&#xff08;Operations&#xff09; 3.4.1 参数表 3.4.2 返回类型 3.5 类的职责…

基于JavaWeb的个人健康信息管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本个人健康信息管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…

data数据响应式

data数据响应式 所有在实例上挂载的属性&#xff0c;都可以在视图中直接使用 data中的数据&#xff0c;是经过“数据劫持”的&#xff0c;是“响应式数据” 响应式&#xff1a;修改数据&#xff0c;视图会自动更新 MV原理&#xff1a;其中一条线的原理&#xff0c;data响应式的…

Nessus详细安装-windows (保姆级教程)

Nessus描述 Nessus 是一款广泛使用的网络漏洞扫描工具。它由 Tenable Network Security 公司开发&#xff0c;旨在帮助组织评估其计算机系统和网络的安全性。 Nessus 可以执行自动化的漏洞扫描&#xff0c;通过扫描目标系统、识别和评估可能存在的安全漏洞和弱点。它可以检测…

DRF从入门到精通三(反序列化数据校验源码分析、断言Assert、DRF之请求、响应)

文章目录 一、反序列化数据校验源码分析二、断言Assert三、DRF之请求、响应Request类和Response类请求中的Request 能够解析前端传入的编码格式响应中的Response能够响应的编码格式 一、反序列化数据校验源码分析 反序列化数据校验&#xff0c;校验顺序为&#xff1a;先校验字段…

Go后端开发 -- Golang的语言特性

Go后端开发 – Golang的语言特性 文章目录 Go后端开发 -- Golang的语言特性一、Golang的优势1.部署极其简单&#xff1a;2.静态语言3.语言层面的并发4.强大的标准库5.简单易学6.运行效率对比 二、Golang的适用领域1.应用领域2.明星产品 三、Golang的不足 一、Golang的优势 1.部…

共享购:消费前沿的领导者

在当今这个信息化、互联网高速发展的时代&#xff0c;商业模式也在不断地创新和变革。共享购模式作为一种新型的商业模式&#xff0c;正逐渐受到广泛的关注和追捧。本文将深入探讨共享购模式的核心理念、优势以及如何应用在实际商业场景中&#xff0c;为读者揭示这一模式的巨大…

计算机组成原理综合5

A 按照题意&#xff0c;程序P执行的时钟周期数为1000080%11000020%1028000&#xff0c;程序P的平均CPI为28000/100002.8&#xff0c;计算机主频为1GHz&#xff0c;CPU执行时间为28000/(1G/s)28μs。 B A 符号位为1 首先将0.4375转化为二进制&#xff0c;0.250.1250.06250.43…

nodejs+vue+ElementUi资源互助共享平台的设计

后台&#xff1a;管理员功能有个人中心&#xff0c;用户管理&#xff0c;卖家管理&#xff0c;咨询师管理&#xff0c;萌宝信息管理&#xff0c;幼儿知识管理&#xff0c;保姆推荐管理&#xff0c;音频资源管理&#xff0c;二手商品管理&#xff0c;商品分类管理&#xff0c;资…

推荐给前端开发的 5 款 Chrome 扩展

工欲善其事&#xff0c;必先利其器。Chrome 可能是前端开发中使用最多的浏览器。在日常开发中&#xff0c;下列几款 Chrome 扩展也许能让你的开发工作事半功倍 &#x1f680; Vue.js devtools ⚙️ vue 官方专为 vue 应用开发的调试工具。 通过使用它&#xff0c;你可以快速查看…

力扣单调栈算法专题训练

目录 1 专题说明2 训练 1 专题说明 本博客用来计算力扣上的单调栈题目、解题思路和代码。 单调栈题目记录&#xff1a; 2232866美丽塔II 2 训练 题目1&#xff1a;2866美丽塔II。 解题思路&#xff1a;先计算出prefix[i]&#xff0c;表示0~i满足递增情况下&#xff0c;0~i…

NC65 查询单据所处的流程状态以及流程平台客户端工具类

1、查询单据所处的流程状态 nc.bs.wfengine.engine.EngineService的queryFlowStatus()方法 /*** 查询单据所处的流程状态* * param billId* param billType* param result* return* throws DbException*/public int queryFlowStatus(String billId, String billType, int flo…

【UML】第8篇 用例图(3/3)

目录 一、用例的关系 1.1 泛化&#xff08;Generalization&#xff09;关系 1.2 包含&#xff08;include&#xff09;关系 1.3 扩展关系 二、用例表示例 不是非要把电影改成连续剧&#xff0c;给大家播&#xff0c;确实是时间和精力有限。 用例图&#xff0c;虽然简单&…