【笔记】数据结构08

news2024/9/21 8:00:53

文章目录

    • 最小堆的构建
  • 另一个树的子树
  • 找树左下角的值

折半查找的平均查找长度[顺序表]

  • 画出折半查找树
  • 将关键字按完全二叉树形式画出查找树
    • l o g 2 n + 1 log_2n+1 log2n+1
    • 12个结点画出高度为4的查找树
      • 1层1个节点比较1次,2层2个节点比较2次,3层4个节点比较3次,4层5个结点比较4次。
      • 11+22+43+54=37
      • 37/12=3.1

平方探测法:二次探测法
再散列使用的处理方法:d:+1,-1,+4,-4… 先计算加,后计算减

ASLs:查找表中评论查找比较次数
ASL s= (1+7+1+1+2+1+4+2+4)/9=23/9≈2.56冲突次数+1
ASL u=(3+2+1+2+1+1+1+9+8+7+6)/11=41/11=3.73

最小堆的构建

最小堆的构建:
初始数组为:9,3,7,6,5,1,10,2

  按照完全二叉树,将数字依次填入。

  填入后,找到最后一个结点(本示例为数字2的节点),从它的父节点(本示例为数字6的节点)

开始调整。根据性质,小的数字往上移动;至此,第1次调整完成。

  注意,被调整的节点,还有子节点的情况,需要递归进行调整。

  第二次调整,是数字6的节点数组下标小1的节点(比数字6的下标小1的节点是数字7的节点),

用刚才的规则进行调整。以此类推,直到调整到根节点。

  以下是本示例的图解:

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

另一个树的子树

在这里插入图片描述

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    bool isSubtree(TreeNode* s, TreeNode* t) {
        if(!s)return false;
        if(isSame(s,t))return true;
        return isSubtree(s->left,t)||isSubtree(s->right,t);
    }
    bool isSame(TreeNode* s,TreeNode* t){
        if(!s&&!t)return true;
        if(!s||!t)return false;
        if(s->val!=t->val)return false;
        return isSame(s->left,t->left)&&isSame(s->right,t->right);
    }
};

找树左下角的值

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int findBottomLeftValue(TreeNode* root) {
        int maxDepth=0;
        int leftVal = root->val;
        findleftvalue(root,maxDepth,leftVal,0);
        return leftVal;
    }
    void findleftvalue(TreeNode* root,int& maxDepth,int& leftVal,int depth){
        if(root==NULL)return;
        //遍历左右子树 先遍历左子树
        findleftvalue(root->left,maxDepth,leftVal,depth+1);
        findleftvalue(root->right,maxDepth,leftVal,depth+1);

        //更新左下角
        if(depth>maxDepth){
            maxDepth=depth;
            leftVal = root->val;
        }
    }

};

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

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

相关文章

2024年高教杯国赛(A题)碰撞检测模型+最优螺距|数学建模竞赛解题思路|完整代码论文集合

我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

计算机,数学,AI在社会模拟中的应用

国家智囊团会使用社会模拟器来预测社会动向和一些问题的涌现,亚洲社会仿真学会(ASSA)最近在武汉成立,旨在推动大型社会模拟器的研发和应用。 未来随着计算机算力的提升以及人工智能的进化,我们每个人都可能在计算机中被…

如何通过学习英语,打出人生的‘王炸’?

如何通过学习英语,打出人生的‘王炸’? 每个人都渴望一张“王炸”牌,能瞬间改变人生的走向。有的人通过天赋,有的人依靠机遇,而今天我们要探讨的,是通过学习英语打出人生“王炸”的真实故事。英语&#xf…

DB2创建数据库-创建用户-赋值权限-导入数据

这篇文章主要内容以下几点: 1)创建数据库 2)创建用户 3)给用户赋权限 4)导入准备好的建表语句和数据 一、创建数据库 安装DB2数据库软件,在我另一篇文章写有,自己查看。这里不讲解安装。假设你…

react 使用Ant Design中DatePicker设置mode=“year“无法获取value

一、问题描述 <DatePicker placeholder"请选择年份" mode"year" onChange{this.onChange}/>// 使用上边代码&#xff0c;界面呈现出只有年份的选择器。但是&#xff0c; onChange 事件根本不会触发&#xff0c;获取不了值&#xff01;二、解决办…

【系统架构设计师-2011年】综合知识-答案及详解

更多内容请见&#xff1a; 备考系统架构设计师-核心总结索引 文章目录 【第1题】【第2~4题】【第5~7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18~19题】【第20~21题】【第22题】【第23题】【第24题】【第2…

【PyQt6 应用程序】解说+原声视频混剪无显卡精简版,无显卡可用

在当今视频内容创作日益繁荣的时代,利用自动化工具进行视频编辑和二次创作已成为提高生产效率和创作水平的重要手段。本文将介绍如何使用PyQt6创建一个应用程序,该程序能够自动提取视频中的解说和原声部分,并使用人工智能对解说进行二次创作,从而生成具有独特风格的新视频内…

[网络原理]关于网络的基本概念 及 协议

文章目录 一. 关于网络的概念介绍1. 局域⽹LAN2. ⼴域⽹WAN3. 主机4. 路由器5. 交换机IP地址端口号 二. 协议协议分层TCP/IP五层模型(或四层)OSI七层模型封装分用 一. 关于网络的概念介绍 1. 局域⽹LAN 局域⽹&#xff0c;即 Local Area Network&#xff0c;简称LAN。 Local …

会声会影2024是一款功能强大的专业视频制作软件及会声会影字体怎么安装

字幕在视频中扮演着多重角色&#xff0c;对于不同类型的观众都有重要意义。通过提供文字信息&#xff0c;字幕帮助观众更好地理解视频内容&#xff0c;特别是对于那些听力受损或不懂视频语言的观众来说&#xff0c;字幕是他们获取信息的重要途径。这篇文章就一起来看看会声会影…

面试高频:Mysql事务

在MySQL中&#xff0c;事务是用于管理数据库操作的一组语句&#xff0c;它们作为一个整体执行&#xff0c;以确保数据的一致性和完整性。事务提供了一种机制&#xff0c;可以将多个操作合并为一个原子单元&#xff0c;这样要么所有操作都成功执行&#xff0c;要么在出现错误时&…

HarmonyOS开发实战( Beta5版)合理使用动画丢帧规范实践

本文列举了部分用于优化动画时延的正反案例&#xff0c;帮助开发者在遇到相似场景时进行优化&#xff0c;解决构建页面动画时遇到动画时延较长的问题。 减少动画丢帧 在播放动画或者生成动画时&#xff0c;画面产生停滞而导致帧率过低的现象&#xff0c;称为动画丢帧。 播放…

《Learning To Count Everything》CVPR2021

摘要 论文提出了一种新的方法来解决视觉计数问题&#xff0c;即在给定类别中仅有少量标注实例的情况下&#xff0c;对任何类别的对象进行计数。将计数问题视为一个少样本回归任务&#xff0c;并提出了一种新颖的方法&#xff0c;该方法通过查询图像和查询图像中的少量示例对象…

【Linux高级命令】2_查看日志命令(重点)

文章目录 一、查看日志文件1.1 日志文件1.2 查看日志信息&#xff1a;head1.3 查看日志信息&#xff1a; tail【重点】1.4 工作中的使用场景 二、查看操作系统信息 一、查看日志文件 1.1 日志文件 就是一个文本文件 里面记录了程序运行的信息 作用 通过最后几行信息&#xff…

JIT编译:Java性能加速的关键技术

JIT&#xff08;Just-In-Time&#xff09;编译是 Java 虚拟机&#xff08;JVM&#xff09;中一种重要的优化技术&#xff0c;用来在程序运行时动态地将字节码编译成机器码&#xff08;也就是平台特定的原生代码&#xff09;&#xff0c;从而提高程序的执行效率。 以下是 JIT 编…

领衔登榜!凯伦股份入选2024年度市级工业设计中心名单

近日&#xff0c;由苏州市工信局认定的2024年度市级工业设计中心名单正式完成了公示&#xff0c;江苏凯伦建材股份有限公司领衔登榜。 据了解&#xff0c;工业设计是指以工业产品为主要对象&#xff0c;综合运用科技手段和工学、美学、心理学、经济学等知识&#xff0c;对产品的…

2024.9.5 作业

注释QT基础代码 QT core gui#如果Qt版本大于4&#xff0c;则添加widgets模块 greaterThan(QT_MAJOR_VERSION, 4): QT widgets#启用C11编译标准 CONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been mark…

【机器学习】自然语言处理中的Transformer模型:深度解析与前沿发展

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 引言Transformer模型概述编码器&#xff08;Encoder&#xff09;与解码器&#xff08;Decoder&#xff09; 自注意力机制与多头注意力自注意力机制多头注意力机制 位置编码与模型优势位置编码模型优势…

MySQL数据库的基本概念(day23)

1 学习目标 了解数据库相关的概念了解并掌握MySQL产品的安装了解并掌握MySQL服务的使用重点掌握MySQL语法规范重点掌握数据库的管理语法重点掌握数据表的管理语法 2 数据库概述 2.1 数据库相关概念 2.1.1 什么是数据库 数据库的英文为DataBase&#xff0c;简称DB&#xff…

linux基础IO——动静态库——实现与应用学习、原理深入详解

前言&#xff1a;本节内容是基础IO部分的动静态库。 本节内容&#xff0c; 我们将站在实现者的角度上自己实现一下动静态库&#xff0c; 并且会站在使用者的角度上使用我们自己实现的库。过程中牵扯到许多新的知识&#xff0c; 最后我们会重谈一下我们的进程。 理解一下有了动静…

如何开发潜在客户

本文将介绍发掘潜在客户的关键步骤&#xff0c;其中利用企搜客大数据拓客&#xff0c;是相对高效的工具模式&#xff0c;快速开发潜在客户拓展业务。 一、潜在客户开发的重要性 潜在客户开发是企业营销中至关重要的一环。通过精准的目标客户定位和有效的开发策略&#xff0c;企…