数据结构—基础知识(十):树和二叉树(b)

数据结构—基础知识(十):树和二叉树(b)

二叉树的定义

二叉树( Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n=0);或为非空树,对于非空树T:

  1. 有且仅有一个称之为根的结点
  2. 根结点以外的其余结点分为两个互不相交的子集T1和 T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。

二叉树与树一样具有递归性质,二叉树与树的区别主主要有以下两点:

  1. 二叉树每个结点至多只有两棵子树(即二叉树中中不存在度大于2的结点);
  2. 二叉树的子树有左右之分,其次序不能任意颠倒到

二叉树的递归定义表明二叉树或为空,或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。由于这两棵子树也是二叉树,则由二叉树的定义,它们也可以是空树。由此,二叉树可以有5种基本形态,如下图所示。
在这里插入图片描述

注:有关树的术语是都适用于二叉树

二叉树的性质

二叉树具有以下重要特性:

性质1 在二叉树的第i层上至多有2^(i-1)个结点(i≥1)。

性质2 深度为k的二叉树至多有(2^k)-1个结点(k≥1)。

性质3 对任何一棵二叉树T,如果其终端节点数为n0,度为2的结点数为n2,则n0=n2+1;结点总数为n=n0+n1+n2。

再看二叉树中的分支数。除根结点外,其余一个结点都有一个分支进入,设B为分支总数,则n=B+1。由于这些分支是由度为1或2的结点射出的,所以又有B=n1+2·n2。于是得n=n1+2·n2+1。

满二叉树和完全二叉树

满二叉树:深度为k且含有(2^k)-1个结点的二叉树。

  • 满二叉树的特点是:每一层上的结点数都是最大结点数,即每一层i的结点数都具有最大值2。
  • 可以对满二叉树的结点进行连续编号,约定编号从根结点起,自上而下,自左至右。由此可引出完全二叉树的定义。
    在这里插入图片描述

完全二叉树:深度为k的,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树。

完全二叉树的特点是

  1. 叶子结点只可能在层次最大的两层上出现;
  2. 对任一结点,若其右分支下的子孙的最大层次为l,则其左分支下的子孙的最大层次必为l或I+1。

性质4 具有n个结点的完全二叉树的深度为log(2)(n)(向下取整)+1

性质5 如果对一棵有n个结点的完全二叉树(其深度为log(2)(n)(向下取整)+1)的结点按层序编号(从第1层到第log(2)(n)(向下取整)+1层,每层从左到右),则对任一结点i(1≤i≤n),有:

  1. 如果i=1,则结点i是二叉树的根,无双亲;如果i>1,其双亲PARENT(i)是结点i/2(向下取整)。
  2. 如果2i>n,则结点i无左孩子(结点i为叶子结点);否则其左孩子LCHILD(i)是结点2i。
  3. 如果2i+1>n,则结点i无右孩子;否则其右孩子RCHILD(i)是结点2i+1。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle错误代码对应原因

Oracle oracle查询列长度太长ORA-01460ORA-01489ORA-01704 oracle查询列长度太长 查询的varchar的列字符串长度超过4000(取决与oracle怎么计算这个字符的长度) 例如: col like ‘%?%’,如果这个like后面的字符串长度超过4000就会报错,其中…

vivado使用注意事项

记得给constrs(.xdc)限制文件设置为目标文件(set as Target Consraint File)

计算机网络原理

第一章 认识计算机网络 👉计网体系结构 一、计算机网络概述 见x-mind 二、体系结构&参考模型 1.1 分层结构 1.1.1❓❓❓为什么要分层? 发送文件前要完成的工作: 发起通信的计算机必须将数通信的通路进行激活要告诉网络如何识别目的…

springboot120企业级工位管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的企业级工位管理系统 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …

vue 解决:Module not found: Error: Can‘t resolve ‘vue-router‘ 的问题

1、问题描述: 其一、报错为: Module not found: Error: Cant resolve vue-router 中文为: 找不到模块:错误:无法解析“vue-router” 其二、问题描述为: 根据报错的中文信息可知:应该是无法…

项目成本估算基准的常见步骤

项目成本估算基准是指在项目启动阶段确定的用于衡量和控制项目成本的基准。 基准成本是项目成本估算的依据,也是后续成本控制和决策的依据。它为管理层提供项目预算投资方案等关键投资依据,决定资源的分配情况,有助于优化资源使用效率&#x…

B-Tree详解及编码实现

一、概念和特性 1、定义 B-Tree是一种平衡的多叉树,适用于外查找多路搜索树,这种数据结构能够保证数据节点查找、顺序访问、插入、删除的动作,其平均时间复杂读控制在O(logN)内;B树为系统大块数据的读写操作做了优化,少定位记录时…

HCIP 交换

拓扑图&IP划分如下: 第一步,配制VLAN LSW1,LSW2&LSW3同理 检测 LSW1 LSW2 测试

最适合家用的洗地机哪个牌子好?清洁力强的洗地机推荐

随着家用市场的不断壮大,洗地机逐渐为人们熟知。众多厂家为提升深度清洁效果投入大量成本和时间,然而消费者在选择洗地机时往往难以判断品质。无线洗地机市场上涌现多个品牌,如何找到性能优越、实惠耐用的机型呢?在了解洗地机时,…

实战内网穿透NPS搭建过程

前提条件 首先你要有个公网IP的服务器,既然是内网穿透,那必然是通过公网IP或者域名访问本地服务。 官网下载地址 https://github.com/ehang-io/nps/releases 服务端 选择linux_amd64_server.tar.gz 客户端 选择windows_amd64_client.tar.gz 服…

列表的创建与删除

Python 中列表可以动态地添加、修改和删除元素,是 Python 编程中不可或缺的一部分。本文将介绍如何使用 Python 创建和删除列表,以及常用的方法和技巧。 创建列表 在 Python 中,我们可以使用一对方括号 [ ] 来创建一个空列表,也可…

UF_UI_select_with_single_dialog()通过单选对话框选择单个对象。对象可以通过光标或输入名称进行选择。对象被突显出来。

int response0;//返回用户操作类型,点了哪一种返回取消或者确定tag_t objtagNULL_TAG;//输出选择对象tag;double cursor[ 3 ];//输出光标位置tag_t view_tagNULL_TAG;//输出视图tag;UF_UI_select_with_single_dialog("请选择一个对象","获取对象类型…

dolphinscheduler节点二次开发需要改动的部分

dolphinscheduler节点二次开发需要改动的部分 前端 在dolphinscheduler-ui/public/images/task-icons/目录下新增两个节点的logo图片,一个为激活状态的一个为非激活状态的,如下。 修改文件dolphinscheduler-ui/src/views/projects/task/constants/task…

CSS高级技巧导读

1,精灵图 1.1 为什么需要精灵图? 目的:为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度 核心原理:将网页中的一些小背景图像整合到一张大图中,这样服务器只需要一次请求就可以了 1.2 精灵…

centos7.9安装redmine5.1.1

前提: 安装mysql并新建数据库--教程太多了此步骤省略; 用sqlyog连上mysql创建数据库redmine; 1.下载redmine-5.1.1.tar.gz,上传到/usr/local/software目录下; 2.解压 cd /usr/local/software tar -zxvf redmine-5.…

JavaScript进阶:WebAPIs重点知识整理2

目录 1 对节点的相关操作 1.1 查找节点 1.1.1 查找节点的父节点 1.1.2 查找节点的子节点 1.1.3 查找节点的兄弟节点 1.2 新增节点(先创建,后追加) 1.3 克隆节点 1.4 删除节点 2 M 端(移动端)事件 3 JS清空表…

uniapp使用uni-forms表单校验无效

查看是否写了name属性,且name属性的属性值得和下面v-model绑定的一致,否则校验不生效 官网

C#string字符串相关面试题

C#字符串(string)是什么类型 C#中的字符串是一种引用类型,属于.NET Framework中的System.String类。在C#中,字符串是不可变的,也就是说,一旦被创建,就不能再被修改。这意味着对于任何字符串的操…

2024年可能会用到的几个地图可视化模板

前言 在数字化的过程中,数据可视化变得越来越重要。用户喜欢通过酷炫的视觉效果和直观的数据展示来理解数据。可视化地图组件是数据可视化的重要组成部分。这些地图组件提供多样化的效果,能够更好地展示数据的关系和地理分布,直观地将数据与…

JUC-CAS

1. CAS概述 CAS(Compare ans swap/set) 比较并交换,实现并发的一种底层技术。它将预期的值和内存中的值比较,如果相同,就更新内存中的值。如果不匹配,一直重试(自旋)。Java.util.concurrent.atomic包下的原…