当前位置: 首页 > news >正文

生成哈夫曼树C卷(JavaPythonC++Node.jsC语言)

给定长度为n的无序的数字数组,每个数字代表二叉树的叶子节点的权值,数字数组的值均大于等于1。请完成一个函数,根据输入的数字数组,生成哈夫曼树,并将哈夫曼树按照中序遍历输出。
为了保证输出的二又树中序遍历结果统一,增加以下限制:二叉树节点中,左节点权值小于等于右节点权值,根节点权值为左右节点权值之和。当左右节点权值相同时,左子树高度高度小于等于右子树。
注意:所有用例保证有效,并能生成哈夫曼树。
提醒:哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。
例如:
由叶子节点5 15 40 30 10生成的最优二叉树如下图所示,该树的最短带权路径长度为40*1+30*2+15*3+5*4+10*4=205。

输入描述

第一行输入为数组长度,记为N,1<=N<=1000,第二行输入无序数值数组,以空格分割,数值均大于等于1,小于100000

输出描述

输出一个哈夫曼树的中序遍历的数组,数值间以空格分割

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5
5 15 40 30 10

输出

40 100 30 60 15 30 5 15 10

说明

根据输入,生成哈夫曼树,按照中序遍历返回。所有节点中,左节点权值小于等于右节点权值,根节点权值为左右节点权值之和。当左右节点权值相同时,左子树高度高度小于等于右子树。
http://www.lryc.cn/news/316801.html

相关文章:

  • Java代码审计安全篇-SSRF(服务端请求伪造)漏洞
  • 入门可解释机器学习和可解释性【内容分享和实战分析】
  • Promise其实也不难
  • 吴恩达 x Open AI ChatGPT ——如何写出好的提示词视频核心笔记
  • JVM从1%到99%【精选】-【初步认识】
  • pdf转图片(利用pdf2image包)
  • SwiftUI的转场动画
  • Trust Region Policy Optimization (TRPO)
  • 消息服务--Kafka的简介和使用
  • 【c++11线程库的使用】
  • 无限debugger的几种处理方式
  • 数据库基础理论知识
  • 华为OD机试真题-模拟目录管理-2024年OD统一考试(C卷)
  • yield代码解释
  • C#四部曲(知识补充)
  • Vue中的数据交互有几种方式
  • 2.MySQL中的数据类型
  • 身份证查询真伪-三要素查验-ios身份证实名认证接口调用
  • @EnableWebMvc介绍和使用详细demo
  • VC-旅游系统-213-(代码+说明)
  • 重学SpringBoot3-ErrorMvcAutoConfiguration类
  • 剑指offer面试题34 丑数
  • C++ std::list的merge()使用与分析
  • Quartz的分布式功能化设计
  • Caffeine缓存
  • AI辅助研发正在成为造福人类的新生科技力量
  • 程序分享--排序算法--归并排序
  • pg数据库和mysql区别
  • Jetpack Compose 动画正式开始学习
  • iOS 17.4报错: libopencore-amrnb.a[arm64]