11.13堆的各种操作算法,二叉树的一些性质


算法 


二叉堆的上调

在树上进行的插入排序 。循环次数不会超过树的高度,即插入交换次数不会超过ologn,n是结点个数

要么到根节点,即i=1结束,要么当前元素还比上面的元素小,直到不比上面的元素小,即h[i/2]<=elem

上调只需要在该分支上不断向上,而下调需要考虑是到左子树还是到右子树,具体就是看那个更小

二叉堆的下调

对于第二点,如果右孩子比根节点小,但是比左兄弟大,那么如果根节点和右孩子交换,右孩子成为根节点后,依然比其左兄弟(此时为左孩子)大,那么依然需要下调。而如果让更小的,即左孩子上来,那么交换完后就不需要调整

二叉堆的插入操作

插入是使堆的大小增加,删除是使堆的大小减少,增加最好不要直接放在顶点上,因为就需要调整两个结点,一个是下调新插入的,一个是放到底下的原顶结点,而如果是上调,就只需要调整新的

二叉堆的删除操作

从堆中取出顶点,然后先记录最后的那个元素,使n-1,之后把最后的结点放在顶点上,开始进行下调调整

二叉堆建堆

两种方式,即不断的上调和下调的区别

朴素建堆是上调操作

一共N个结点,每个结点都要logn的复杂度,所以时间复杂度是nlogn

上调建成的堆和下调建成的堆不一样

一些性质

把一棵树转换为二叉树后,这棵二叉树的形态是( A )。

A. 唯一的

对于完全二叉树,有

顺序存储n个结点的二叉树,完全二叉树需要的空间最小

只有完全二叉树才能顺序存储,或者说顺序存储只适合于完全二叉树 

就是说,只有完全二叉树,才能保证数组都是连续的,中间没有空缺的元素,不然数组一定不连续,中间一定有空缺的元素

3个结点可能构造出5种形态的二叉树

设叶子节点个数为n0,度为1的节点个数为n1,度为2的节点个数为n2,必有 n0+n1+n2 = n

(1) 对于二叉树有: n0 = n2+1

这个1是根节点,即n0+n1+n2=2n2+n1+1。

一个节点如果只有一个子节点,那么它的度就是1,除了根节点以外,每个结点都有自己的父节点,所以只需要把所有的度加起来就是除了根节点以外的所有结点的数量和

对于n=2n2+n1+1。如果n为奇数,由于2n2一定是偶数,所以n1一定是偶数

如果N为偶数,那么n1一定是奇数

对于完全二叉树,完全二叉树只可能有一个度为1的结点,即形成满二叉树的过程,满二叉树只有度为0和2的结点

一个满二叉树(完全二叉树)是指一个二叉树,其中每个层次除了最后一层可能不足最大容量外,其它层都是最大容量,而且最后一层从左到右所有节点都是满的 

一个节点如果只有一个子节点,那么它的度就是1。因此,如果一个二叉树没有度为1的节点,那么它的所有节点的度都只能是0或2。这意味着每个节点都有两个子节点(除了叶子节点,它们没有子节点)。然而,这并不意味着该树是满二叉树。

一个满二叉树的特征是,除了最后一层可能不足最大容量外,其它层都是最大容量,而且最后一层从左到右所有节点都是满的。对于一个给定的层数,满二叉树的节点数量可以通过公式2^i - 1(i是层数)计算得出。

满二叉树的总结点数一定是奇数,因为每层结点数都是偶数,即2^(k-1),

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结
点总数是(2^k) -1 ,则它就是满二叉树。
一颗树深度为h,最大层数为k,深度与最大层数相同,k=h;
它的叶子数是: 2^h  第k层的结点数是: 2^(k-1)  总结点数是: 2^k-1 (2的k次方减一)  总节点数一定是奇数。

满二叉树是完全的完全二叉树 

设一棵完全二叉树共有699个节点,则在该二叉树中叶子节点数为?

由于n=2n2+n1+1,总结点数为奇数,所以N1为偶数,由于为完全二叉树,只可能为0,得n2=349,则n0=n-n2=n2+1,即350

向下取整再+1

二叉链表存储树,就是孩子兄弟表示法存储树

所谓编号,实际上就是每个结点被访问到的序号,也就只需要保证按照一定的顺序去遍历这个树

n=n0+n1+n2+n3+n4=4n4+3n3+2n2+n1+1

顺序存储不适用存储树,最好用来存储完全的树

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

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

相关文章

2.3 Windows驱动开发:内核字符串转换方法

在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING&#xff0c;这两种格式是微软推出的安全版本的字符串结构体&#xff0c;也是微软推荐使用的格式&#xff0c;通常情况下ANSI_STRING代表的类型是char *也就是ANSI多字节模式的字符串&#xff0c;而UNICODE_STRING则代…

Ubuntu之apt更换国内镜像源

一、需求说明 Ubuntu系统默认使用的是Ubuntu官网镜像源http://archive.ubuntu.com&#xff0c;网站位于境外&#xff0c;我们使用apt安装软件包的时候经常出现无法连接的情况&#xff0c;如下图所示。所以建议将系统apt安装的镜像源切换为国内镜像源。 二、更新apt镜像源步骤…

五、L2TPv2 VPN

L2TPv2 VPN 1、L2TPv2概述1.1.目的1.2.特点 2、L2TP原理2.1.基本概念2.2.工作原理2.2.1.协议架构2.2.2.报文结构2.2.3.报文封装2.2.4.报文传输 3、工作过程4、应用场景4.1、远程拨号用户发起L2TP隧道连接4.2、LAC接入拨号请求发起L2TP隧道连接4.3、LAC接入PPPoE用户发起L2TP隧道…

Java版本spring cloud + spring boot企业电子招投标系统源代码

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

C++网络编程库编写自动爬虫程序

首先&#xff0c;我们需要使用 C 的网络编程库来编写这个爬虫程序。以下是一个简单的示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> #include <openssl/ssl.h>const char* proxy_host "duoip"; const in…

thinkphp5 连接多个服务器数据库

如果你的database.php 是这样&#xff0c; 这是默认的db连接配置 如果还想连接其他服务器&#xff0c;或数据库 在config.php中追加数据库配置&#xff0c; 在使用的地方调用&#xff1a; use think\Db;public function test(){$db3Db::connect(config(db3));$result $db3…

简单地聊一聊Spring Boot的构架

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 本文小编将详细解析Spring Boot框架&#xff0c;并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的…

2023亚太杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

2.4 Windows驱动开发:内核字符串拷贝与比较

在上一篇文章《内核字符串转换方法》中简单介绍了内核是如何使用字符串以及字符串之间的转换方法&#xff0c;本章将继续探索字符串的拷贝与比较&#xff0c;与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数&#xff0c;字符串的拷贝往往伴随有内核内存分配&…

【Orangepi Zero2 全志H616】驱动串口实现Tik Tok—VUI(语音交互)

一、编程实现语音和开发板通信 wiringpi库源码demo.c 二、基于前面串口的代码修改实现 uartTool.huartTool.cuartTest.c 三、ADB adb控制指令 四、手机接入Linux热拔插相关 a. 把手机接入开发板 b. 安装adb工具&#xff0c;在终端输入adb安装指令&#xff1a; sudo apt-g…

k8s的service自动发现服务:实战版

Service服务发现的必要性: 对于kubernetes整个集群来说&#xff0c;Pod的地址也可变的&#xff0c;也就是说如果一个Pod因为某些原因退出了&#xff0c;而由于其设置了副本数replicas大于1&#xff0c;那么该Pod就会在集群的任意节点重新启动&#xff0c;这个重新启动的Pod的I…

基于卷积神经网络和客源注意力机制的OD客流预测模型

文章信息 论文题目为《An origin–destination passenger flow prediction system based on convolutional neural network and passenger source-based attention mechanism》&#xff0c;该文于2023年发表于Expert Systems With Applications期刊上。文章提出一种基于乘客源注…