刷题总结 1.23

2024-01-23 19:52
文章标签 总结 刷题 1.23

本文主要是介绍刷题总结 1.23,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

三阶B-树根节点最少有一个关键字,其他节点最少【3/2】-1(向上取整),即为1;

所以该B树为一颗满二叉树,关键字个数为31;

这里的最优二叉树指的是赫夫曼二叉树,由赫夫曼二叉树的构造可以知道:n个叶子结点的赫夫曼树总共有2n-1个结点,那么分支结点的个数=总结点数 - 叶子结点数 = 2n-1-n = n-1 。

最优二叉树中只有n0和n2,而二叉树的性质是n2=n0-1,所以n-1

只有根的顺序在变,左右子树一直都是先左后右,不分遍历

(^的优先级比 *高)

卡特兰公式:

所以一共3个元素,一共有5种出栈方式,其中作为标识符的只有字母和下划线开头的,所以有

a_3,a3_,_3a,_a3这四种情况:但是_a3情况不可能实现,所以为3种。

从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。

根据从右至左扫描计算过程如下:

题目中的前缀形式为:+-*^ABCD/E/F+GH

1) 首先扫描 H,是数字 入栈 ,栈中为: H

2) 扫描 G 为数字 入栈 ,栈中为:G,H

3)扫描+ 为运算符 ,依次弹出G ,H ,得到 G+H 的结果 入栈,栈中为: G+H(在这里方便讲解 标记为  G+H)

4)扫描 F 为数字 ,入栈 ,栈中为  F, G+H

5)扫描 / 为运算符, 依次弹出 F,G+H ,计算F/(G+H) 的结果入栈 ,栈中为 F/(G+H)

6)扫描 E 为数字,入栈,栈中为 E,  F/(G+H)

7) 扫描 / 为运算符, 依次弹出E, F/(G+H) ,计算 E/(F/(G+H))

8)扫描 D 为数字,入栈 栈中为:D, E/(F/(G+H))

9) 扫描 C 为数字,入栈 栈中为:C,D, E/(F/(G+H))

10) 扫描 B 为数字,入栈 栈中为:B,C,D, E/(F/(G+H))

11) 扫描 A 为数字,入栈 栈中为:A,B,C,D, E/(F/(G+H))

12) 扫描^ 为数字,依次弹出 A,B 计算 A^B的结果入栈, 栈中为:A^B ,C,D, E/(F/(G+H))

13) 扫描*为数字,依次弹出 A^B,C 计算 A^B*C的结果入栈, 栈中为:A^B* C,D, E/(F/(G+H))

14) 扫描-为数字,依次弹出 A^B*C,D 计算 A^B*C-D的结果入栈, 栈中为:A^B* C-D, E/(F/(G+H))

15) 扫描+为数字,依次弹出 A^B*C-D, E/(F/(G+H))   计算 A^B*C-D+  E/(F/(G+H)) 的到结果

最后得到的表达式为:  A^B* C-D+ E/(F/(G+H))

栈和队列都是特殊的线性表,都有顺序存储和链式存储,顺序栈和链式栈

元素出栈顺序未知。除非 a1=n,则说明元素全部入栈之后再弹出,此时出栈顺序则为a(n),a(n-1)...a(1)。这样答案就是 B 了。

注意:要看清条件背后的本质,实际就是问n的出栈时间可以发生在任一时刻时,问n出栈后的大家的出栈顺序。而这是不确定的,除非n是第一个出栈,那就说明是在所有元素都进栈之后,再出栈,这时可以确定。

这篇关于刷题总结 1.23的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/637345

相关文章

MySQL基本查询示例总结

《MySQL基本查询示例总结》:本文主要介绍MySQL基本查询示例总结,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Create插入替换Retrieve(读取)select(确定列)where条件(确定行)null查询order by语句li

Linux区分SSD和机械硬盘的方法总结

《Linux区分SSD和机械硬盘的方法总结》在Linux系统管理中,了解存储设备的类型和特性是至关重要的,不同的存储介质(如固态硬盘SSD和机械硬盘HDD)在性能、可靠性和适用场景上有着显著差异,本文... 目录一、lsblk 命令简介基本用法二、识别磁盘类型的关键参数:ROTA查询 ROTA 参数ROTA

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

java常见报错及解决方案总结

《java常见报错及解决方案总结》:本文主要介绍Java编程中常见错误类型及示例,包括语法错误、空指针异常、数组下标越界、类型转换异常、文件未找到异常、除以零异常、非法线程操作异常、方法未定义异常... 目录1. 语法错误 (Syntax Errors)示例 1:解决方案:2. 空指针异常 (NullPoi

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Go 1.23中Timer无buffer的实现方式详解

《Go1.23中Timer无buffer的实现方式详解》在Go1.23中,Timer的实现通常是通过time包提供的time.Timer类型来实现的,本文主要介绍了Go1.23中Timer无buff... 目录Timer 的基本实现无缓冲区的实现自定义无缓冲 Timer 实现更复杂的 Timer 实现总结在

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式