数据结构算法习题通关:树遍历 / 哈夫曼 / 拓扑 / 哈希 / Dijkstra 全解析

  • 已知一棵二叉树先序遍历和中序遍历分别为 ABDEGCFH 和 DBGEACHF,请画出这个二叉树的逻辑结构并写出后序遍历的序列。

先序遍历:ABDEGCFH

中序遍历:DBGEACHF

先序遍历看出根为A,左子树DBGE,右子树CHF

A的左子树

再看先序遍历,可以看出左子树的根为B,右子树根为C

看中序遍历 D为B的左子树,右子树要知道GE的关系看先序,E先输出,所以B的右子树为E,要看G为E的左子树还是右子树要看中序遍历,G先输出说明G为E的左子树

A的右子树

看先序遍历,FH都在C的后面输出,所以都在右子树上,并且F先输出所以H为右子树的根,看H为F的左子树还是右子树,看中序遍历H先输出,所以H为F的左子树。

  • 假定用于通信的某电文仅由8个字母构成,各字母在电文中出现的频率分别为(12,5,3,7,14,21,9,15)。请完成:
  1. 构造哈夫曼树;2)为这8个字母设计不等长的Huffman编码,并计算WPL。

N个节点构造的构造哈夫曼树,最后会有2N-1个节点

先排序 3 5 7 9 12 14 15 21

  • 使用序列 {57,40,38,11,13,34,48,75,6,19,9,7} 构造一个大顶堆,请给出构成完成的初始序列。

堆:完全二叉树

存储结构:数组存储

0   1   2   3   4   5   6   7   8  9  10 11

57,40,38,11,13,34,48,75,6,19,9,7

  1. 找到最后一个分支节点,因为后面都是叶子结点,一定符合堆的规则(根大于左右子树的根),这个节点在下标n/2的位置。
  2. 左孩子 :2n+1 右孩子 :2n+2

直接在数组中进行建堆:

7的下标为11,所以最后一个分支节点下标 5 ,就是34

根节点 左孩子           右孩子 交换情况

5 - 34     11 - 7 不交换

4 - 13 9 - 19          10 - 9 19与 13交换

0       1      2      3     4    5       6      7    8    9    10  11

57,40,38,11,19,34,48,75,6,13,9,7

3 - 11   7 - 75   8 - 6 75与11交换

0       1      2      3     4    5       6      7    8    9    10  11

57,40,38,7519,34,48,11,6,13,9,7

2 - 38 5 - 34   6 - 48         48与38交换

0       1      2      3     4    5       6      7    8    9    10  11

57,40,487519,34,3811,6,13,9,7

1 - 40 3 - 75   4 - 19  75与40交换

0       1      2      3     4    5       6      7    8    9    10  11

57,75484019,34,3811,6,13,9,7

0 - 57 1 - 75   2 - 48  75与57交换

0       1      2      3     4    5       6      7    8    9    10  11

75,57,484019,34,3811,6,13,9,7

  • 设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},请给出拓扑排序的序列。

  • 若一棵度为 4 的树中度为 2、3、4 的结点个数分别为 3、2、2,请计算出该树的叶子结点的个数。

度的和:2*3 + 3*2 + 4*2 = 20

树的节点数:度的和 + 1 = 21 (度可以理解为指向他后继的边,所以根节点没有前驱指向他,所以节点数为度+1)

叶子节点度为0 :21 - 3 - 2 - 2 = 14

  • 在结点数是 67 的完全二叉树,按层次,从左到右编号,请计算最后一个非叶子结点的编号。

67 / 2 = 33就是求最后一个分支节点的下标 题3

  • 一个线性序列(36,13,40,63,22,6),假定采用散列函数Hash(key)=key%7来计算散列地址,将其散列存储在A[0~9]中,采用线性探测再散列解决冲突。构造哈希表,并计算等概率情况下的查找成功和不成功的平均查找长度。

  • 在下面的网图中使用Dijkstra算法,从顶点0出发,到各顶点的最短路径,要求写出计算过程。

 

v0到V1的最短路径5 ,路径节点:V0 -> V3 -> V1

v0到V2的最短路径1 ,路径节点:V0 -> V2

v0到V3的最短路径2 ,路径节点:V0 -> V3

v0到V4的最短路径4 ,路径节点:V0 -> V2 -> V4

 

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

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

相关文章

C++GO语言微服务和服务发现

目录 01 03-go-micro简介 02 04-服务发现的简单认识 03 05-consul的安装 04 06-consul常用的命令 05 07-注册服务到consul并验证 06 08-consul健康检查 07 09-consul结合grpc使用-上&#xff08;只实现grpc远程调用&#xff09; 08 10-consul结合grpc使用-中&#xff08…

HDFS 常用基础命令详解——快速上手分布式文件系统

简介&#xff1a; 本文面向刚接触 Hadoop HDFS&#xff08;Hadoop 分布式文件系统&#xff09;的读者&#xff0c;结合 CSDN 博客风格&#xff0c;系统梳理最常用的 HDFS 客户端命令&#xff0c;并配以示例和注意事项&#xff0c;帮助你在开发和运维中快速掌握 HDFS 的文件管理…

VUE CLI - 使用VUE脚手架创建前端项目工程

前言 前端从这里开始&#xff0c;本文将介绍如何使用VUE脚手架创建前端工程项目 1.预准备&#xff08;编辑器和管理器&#xff09; 编辑器&#xff1a;推荐使用Vscode&#xff0c;WebStorm&#xff0c;或者Hbuilder&#xff08;适合刚开始练手使用&#xff09;&#xff0c;个…

make和makefile的使用,以及写一个简单的进度条程序

1.自动化构建-make/makefile 1.1 背景 一个工程文件中的文件不计其数&#xff0c;其按类型、功能、模块放在若干目录中&#xff0c;makefile定义了一系列规则来指定哪些文件需要先编译&#xff0c;哪些文件需要后编译&#xff0c;哪些文件需要重新编译&#xff0c;甚至于过呢…

数据结构中的栈与队列:原理、实现与应用

前言&#xff1a;栈和队列是计算机科学中两种最基础的线性数据结构&#xff0c;它们的独特操作规则和广泛的应用场景使其成为每一位开发者必须掌握的核心知识。本文将通过生活案例、代码实现和实际应用场景&#xff0c;带您深入理解这两种数据结构的精髓。 1.栈&#xff08;Sta…

如何选择自己喜欢的cms

选择内容管理系统cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 检测器的情况下手动检测 CMS 结论 在开始构建自己的数字足迹之前&#xff0c;大多数人会…

SDC命令详解:使用all_outputs命令进行查询

相关阅读 SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html all_outputs命令用于创建一个输出端口对象集合&#xff0c;关于设计对象和集合的更详细介绍&#xff0c;可以参考下面的博客。 Synopsys&#xff1a;设计对象https://chenzhang.blog.csdn…

vue 中的ref

vue 中的ref vue 中的ref 1. ​​ref​​ ** 的基本作用** 在 Vue 中&#xff0c;ref 是用来获取 DOM 元素或者组件实例的一种方式。对于 <el-form> 组件&#xff0c;通过 ref 可以获取到该表单组件的实例&#xff0c;进而调用表单组件提供的各种方法和访问其属性。 …

数据库版本控制工具--flyway

一. 什么是Flyway Flyway 是一款开源的数据库迁移工具。它采用简单直观的方式管理数据库变更&#xff0c;通过版本化的迁移脚本确保数据库结构的一致性和可重复性。无论是开发环境、测试环境还是生产环境&#xff0c;Flyway 都能确保数据库变更按照预期顺序执行&#xff0c;避…

C++使用PoDoFo库处理PDF文件

&#x1f4da; PoDoFo 简介 PoDoFo 是一个用 C 编写的自由开源库&#xff0c;专用于 读取、写入和操作 PDF 文件。它适用于需要程序化处理 PDF 文件的应用程序&#xff0c;比如批量生成、修改、合并、提取元数据、绘图等。 &#x1f31f; 核心特点 特性说明&#x1f4c4; P…

论文分享➲ arXiv2025 | TTRL: Test-Time Reinforcement Learning

TTRL: Test-Time Reinforcement Learning TTRL&#xff1a;测试时强化学习 https://github.com/PRIME-RL/TTRL &#x1f4d6;导读&#xff1a;本篇博客有&#x1f9a5;精读版、&#x1f407;速读版及&#x1f914;思考三部分&#xff1b;精读版是全文的翻译&#xff0c;篇幅较…

dify插件接入fastmcp示例

文章目录 1. 使用python完成mcp服务1.1 准备环境&#xff08;python安装fastmcp&#xff09;1.2 mcp服务端示例代码1.3 启动mcp服务端 2. dify接入2.1 安装MCP SSE和 Agent 策略&#xff08;支持 MCP 工具&#xff09; 插件2.2 dify agent插件配置mcp:2.3 mcp服务配置&#xff…

Linux 挖矿木马排查命令清单

Linux 挖矿木马排查命令清单 1. 系统资源使用情况检查 # 查看CPU、内存使用情况 top -c# 检查CPU占用最高的进程 ps aux --sort-%cpu# 查找可疑进程名 ps -ef | grep -i miner\|cpu\|GPU\|xmr# 检查网络连接情况 lsof -i2. 可疑进程和隐藏进程检查 # 检查僵尸进程 ps -ef | …

PyTorch 中如何针对 GPU 和 TPU 使用不同的处理方式

一个简单的矩阵乘法例子来演示在 PyTorch 中如何针对 GPU 和 TPU 使用不同的处理方式。 这个例子会展示核心的区别在于如何获取和指定计算设备&#xff0c;以及&#xff08;对于 TPU&#xff09;可能需要额外的库和同步操作。 示例代码&#xff1a; import torch import tim…

自主shell命令行解释器

目标 能处理普通命令能处理内建命令 实现原理 用下面的时间轴来表示时间发生次序。时间从左向右。shell由标识为sh的方块&#xff0c;它随着时间从左向右移动。 shell从用户读入字符串“ls”。shell建立一个新的进程&#xff0c;然后等待进程中运行ls程序并等待进程结束。 …

如何在sheel中运行Spark

启动hdfs集群&#xff0c;打开hadoop100:9870&#xff0c;在wcinput目录下上传一个包含很多个单词的文本文件。 启动之后在spark-shell中写代码。 // 读取文件&#xff0c;得到RDD val rdd1 sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt") // 将单词进行切…

【入门】数字走向II

描述 输入整数N&#xff0c;输出相应方阵。 输入描述 一个整数N。&#xff08; 0 < n < 10 ) 输出描述 一个方阵&#xff0c;每个数字的场宽为3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int in;i>1;i--){for(…

Python自动化-python基础(下)

六、带参数的装饰器 七、函数生成器 运行结果&#xff1a; 八、通过反射操作对象方法 1.添加和覆盖对象方法 2.删除对象方法 通过使用内建函数: delattr() # 删除 x.a() print("通过反射删除之后") delattr(x, "a") x.a()3 通过反射判断对象是否有指定…

重新定义高性能:Hyperlane —— Rust生态中的极速HTTP服务器

重新定义高性能&#xff1a;Hyperlane —— Rust生态中的极速HTTP服务器 &#x1f680; 为什么选择Hyperlane&#xff1f; 在追求极致性能的Web服务开发领域&#xff0c;Hyperlane 凭借其独特的Rust基因和架构设计&#xff0c;在最新基准测试中展现出令人惊艳的表现&#xff…

通俗的理解MFC消息机制

1. 消息是什么&#xff1f; 想象你家的门铃响了&#xff08;比如有人按门铃、敲门、或者有快递&#xff09;&#xff0c;这些都是“消息”。 在 MFC 中&#xff0c;消息就是系统或用户触发的各种事件&#xff0c;比如鼠标点击&#xff08;WM_LBUTTONDOWN&#xff09;、键盘输入…