数据结构期末刷题

news2024/11/24 13:55:42

写在前面

此篇文章是在网络上搜集的题目,每一题都可能出现错误,如果各位大佬发现了错误,请在评论区回复一下,看到了就会改

根据遍历序列,画树,求另外一种遍历序列

以下中序遍历简称为中序,其他的同理,另外形如中序(xxx),我所要表达的意思是,暂时只看中序中的xxx部分,

例题一 根据中序,后序求先序

已知二叉树的中序遍历序列为DBEAFHCG,后序遍历序列为DEBHFGCA,构造二叉树,写出先序遍历序列

就一句话,从中序遍历中区分左右子树,从后序遍历序列中找根节点

下面是详细的

  1. 从后序遍历序列中可以得到根节点(就是最后一个):A
  2. DEB在左子树上面,且B是左子树的根节点;HFGC在右子树上面,且右子树的根节点是C
  3. B是左子树的根节点,由中序遍历(DBE)可得,B的左孩子为D,B的右孩子为E;由中序遍历(FHCG)可得,C的右孩子为G,C的左子树上必有FH
  4. 从后序遍历HF中可得,F是根节点,由中序遍历可得F得右孩子是H
    在这里插入图片描述
    前序:ABDECFHG

例题2 已知先序,中序,求后序并构造二叉树

已知二叉树的前序遍历序列为ABCDEFG
中序遍历序列为CBEDFGA,构造二叉树,写出后序遍历序列

一句话:前序找根节点,中序区分左右

  1. 从前序中可以知道根节点是A,且左子树得根节点为B,从中序中可以知道CBEDFG是左子树
  2. 从先序(BCDEFG)可以知道B的右孩子是D,且B的左孩子是C,从中序(EDFG)中可以知道D的左孩子是E,从中序(EDFG)可以知道D的右子树中有FG,从前序遍历DEFG可以知道D的右孩子是F,从中序遍历(FG)中可以得到F的右孩子是G
    在这里插入图片描述
    后序:CEGFDBA

例题3 已知先序,中序,求后序

先序遍历序列为A,B,C,D,E,F 中序遍历序列为C,B,A,E,D,F 求后序遍历序列

先序找根节点,中序确定左右

  1. 根节点为A,左子树的根节点为B,右子树的根节点为D
  2. 由中序遍历可得,B的左孩子是C,D的左孩子是E,D的右孩子是F
    在这里插入图片描述
    后序遍历:CBEFDA

哈夫曼树的构造

我只说我个人的理解,在给定的数据序列中找最小的两个,小的在左边,大的在右边,组成二叉树,在数据序列中删除此次找到的两个数,并加入此次最小两个数的权值之和
重复第一步,直至数据序列只有一个,最后添加0和1,左0右1
看题目把

例题1

在给出的数据序列{3,4,6,8,10,12,18}为叶子结点的权值所构造的哈夫曼树,并计算该树的带权路径长度

构造哈夫曼树

第一步
从3,4,6,8,10,12,18中找两个最小的数,小的在左边,大的在右边,组成二叉树,在数据序列中删除此次找到的两个数,并加入此次最小两个数的权值之和。
找到的是3和4,在给定的数据序列中删除3和4,加入7到末尾,数据序列更新为6,8,10,12,18,7
在这里插入图片描述
接下来重复
这次找到的是6和7,在给定的数据序列中删除6和7,在末尾添加13,数据序列更新为8,10,12,18,13
在这里插入图片描述
这次找到的是8和10,在给定的数据序列中删除8和10,在末尾添加18,数据序列更新为12,18,13,18
在这里插入图片描述
这次找到的是12和13,删除12和13,在末尾添加25,数据序列更新为18,18,25在这里插入图片描述这次找到的是18和18,两个数相同的时候,放左边还是放右边无所谓,将18,18在数据序列中删除,在末尾添加36在这里插入图片描述这次找到的是25和36,将25和36从数据序列中删除,将61插入到末尾,至此数据序列只剩下了一个,标0和1,左0右1,完成在这里插入图片描述

计算带权路径长度

路径就是从根结点出发,到目的结点(都是叶子结点)有几条线

上面的图中
从根节点出发到3,有4条线,长度为4
从根节点出发到4,有4条线,长度为4
从根节点出发到6,有3条线,长度为3
从根节点出发到8,有3条线,长度为3
从根节点出发到10,有3条线,长度为3
从根节点出发到12,有2条线,长度为2
从根节点出发到18,有2条线,长度为2,
相加求和
WPL=各个结点的权值乘以长度的总和
WPL=34+44+63+83+103+122+18*2=160

二叉排序树的构造问题

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

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

相关文章

电路设计 > eMMC应用和PCB layout布局布线参考设计

目录 eMMC介绍 eMMC信号大体介绍 EMMC4.5和5.0封装和兼容性对比 EMMC5.0和5.1封装和兼容性对比 PCB Layout建议 PCB layout参考设计 参考设计1 参考设计2 参考设计3 参考设计4 参考设计5​​​​​​​ eMMC介绍 主要针对现在主流的eMMC5.0以及以上版本。 eMMC信号…

centos 7 安装node-red

一、安装nodejs https://nodejs.org/en/download/ 将其上传到服务器/usr/local/src目录下 下载之后是xz文件,解压xz文件 xz -d node-v16.18.1-linux-x64.tar.xz 解压之后会多一个tar文件,解压tar文件 tar -vxf node-v16.18.1-linux-x64.tar mkdir …

Navicat远程连接MySQL服务器

文章目录一、准备二、配置Navicat允许远程连接MySQL数据库1、使用Navicat直接连接MySQL2、使用 Navicat 通过 SSH 远程登录后再本地方式连接 MySQL3、查看连接为什么使用ssh登录1.便捷性Navicat:数据库可视化工具 一、准备 一台开启 SSH 登录的 Ubuntu 服务器 或 已开启远程登…

PyTorch学习笔记-神经网络Torch.NN基本骨架的使用及卷积原理

1. torch.nn.Module介绍 torch.nn 能够帮助我们更优雅地训练神经网络,使神经网络代码更加简洁和灵活。官方文档:Torch.NN。 在文档中可以看到第一块内容叫做 Container(容器),这就相当于神经网络的骨架,C…

U2Net——U-Net套U-Net——套娃式图像分割算法

U2Net1 相关参考2 U2−NetU^2-NetU2−Net 网络结构3 网络代码和测试1 相关参考 论文名称: U2-Net: Goging Deeper with Nested U-Structure for Salient Object Detetion 论文地址: https://arxiv.org/abs/2005.09007 官方源码: https://git…

机器视觉_工业相机及相关配件选型

文章目录工业相机一、 概述二、 相机参数1. 传感器芯片1.1. CCD&CMOS1.2. CCD1.3. CMOS1.4. 靶面1.5. 传感器芯片选型2. 黑白or彩色3. 帧数⭐4. 接口类型4.1. POE供电三、相关硬件1. 镜头1.1. 焦距2. 光源3. 控制器4. 工控机5. 线缆6. 交换机四、参考工业相机 一、 概述 …

基于FPGA的呼叫设备verilog开发

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 随着集成电路技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字…

Vite+Vue3+TS项目创建及基本环境搭建

1.vite项目搭建 可以按照vite官网操作:https://cn.vitejs.dev/guide/features.html#typescript npm create vitelatest自定义template模板 vscode-文件-首选项-配置用户代码片段-vue.json 添加如下代码即可快速创建vue模板 {"template": {"pref…

做好供应商关系管理,让企业采购交易更简单

大家都知道,企业想要采购到物美价廉的产品与服务,就必须做好相应的供应商管理工作。而其中供应商关系管理是采购过程中至关重要的环节,也是能让企业有效地与供应商之间保持良好关系,这不仅有利于促进采供双方共赢,而且…

Netty入门--传统IO与NIO详解

文章目录IO模型传统阻塞的IO模型--BIOClient端案例Server端案例NIO(Java non-blocking IO)非阻塞IONIO的三大组件 Channel Selector BufferBuffer(缓冲区)Channel(通道)Channe的分类,与Buffer的…

【Spring(六)】使用篇:AOP在开发中的使用

有关Spring的所有文章都收录于我的专栏:👉Spring👈 目录 一、前言 二、演示 三、切面类中声明通知方法 四、使用 相关文章 【Spring(一)】如何获取对象(Bean)【Spring(一&#xff09…

刷爆力扣之数组形式的整数加法

刷爆力扣之数组形式的整数加法 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&…

Nodejs -- 一文了解Express模块

文章目录1. 初识Express1.1 Express简介1.1.1 什么是Express1.1.2 进一步理解Express1.1.3 Express能做什么1.2 Express的基本使用1.2.1 安装1.2.2 基本使用1.2.3 监听GET请求1.2.4 监听POST请求1.2.5 把内容响应给客户端1.2.6 获取URL中携带的查询参数1.2.7 获取URL中的动态参…

一文读懂TCP的三次握手(详细图解)

在学习TCP三次握手的过程前,首先熟悉几个缩写简称: TCB 传输控制块,打开后服务器/客户端进入监听(LISTEN)状态 SYNTCP报文标志位,该位为1时表示发起一个新连接ACKTCP报文标志位,该位为1时&…

傻白入门芯片设计,如何降低CPU功耗?(八)

低功耗芯片设计是本世纪以来最重要的新兴设计方法。可以说没有低功耗设计,就没有今天的智能手机,移动设备,物联网,及高性能计算等产业。随着芯片图形尺寸越来越小,低功耗设计在现在及未来的芯片中会起到越来越重要的作…

使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式

使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,以下使用 使用 Lambda 转换图片为 base64 格式…

UNIAPP实战项目笔记46 订单确认页面的布局

UNIAPP实战项目笔记46 订单确认页面的布局 实际案例图片 订单页面 具体内容图片自己替换哈&#xff0c;随便找了个图片的做示例 具体位置见目录结构 完善布局页面和样式 代码 confirm-order.vue部分 confirm-order.vue 确认订单页面布局和渲染 flex 样式布局 <template>…

Uncaught TypeError: i.createPopper is not a function

“createPopper”不是我们使用引导程序时发生的函数错误 需要popper.js脚本但不在页面上加载它的组件或 在引导脚本之后加载它。要解决此错误&#xff0c;请包括引导程序 在运行 JavaScript 代码之前捆绑脚本。 这是一个工作示例&#xff0c;它加载引导捆绑包脚本来解决 错误。…

黑盒测试用例设计 - 边界值分析法

边界值的选择原则 如果输入条件规定了值的范围&#xff0c;则应取刚达到这个范围边界的值&#xff0c;以刚刚超越这个范围边界的值作为测试输入数据如果输入条件规定了值的个数&#xff0c;则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据如果程序的规…

[附源码]计算机毕业设计springboot电商小程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…