常见面试算法题-数组二叉数

■ 题目描述

【数组二叉树】

二叉树也可以用数组来存储,给定一个数组,树的根节点的值存储在下标1,对于存储在下标N的节点,它的左子节点和右子节点分别存储在下标2*N和2*N+1,并且我们用值-1代表一个节点为空。

给定一个数组存储的二叉树,试求从根节点到最小的叶子节点的路径,路径由节点的值组成。

输入描述

输入一行为数组的内容,数组的每个元素都是正整数,元素间用空格分隔。

注意第一个元素即为根节点的值,即数组的第N个元素对应下标N,下标0在树的表示中没有使用,所以我们省略了。

输入的树最多为7层。

输出描述

输出从根节点到最小叶子节点的路径上,各个节点的值,由空格分隔,用例保证最小叶子节点只有一个。

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

输入

3 5 7 -1 -1 2 4

输出

3 7 2

说明

数组存储的二叉树如图,故到最小叶子节点的路径为3 7 2。


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

输入

5 9 8 -1 -1 7 -1 -1 -1 -1 -1 6

输出

5 8 7 6

说明

数组存储的二叉树如图,故到最小叶子节点的路径为10 8 7 6,注意数组仅存储至最后一个非空节点,故不包含节点“7”右子节点的-1。

 以下代码为本人原创,可以供大家参考,若有不足之处,感谢指出!!!!

while stack:stack1 = []for node in stack:if 0 <= node[1]*2-1 < len(nums):if nums[node[1]*2-1] == -1:node[0].left = Noneelse:b = Tree(nums[node[1] * 2 - 1])node[0].left = bstack1.append([b, node[1] * 2])else:node[0].left = Noneif 0 <= node[1]*2 < len(nums):if nums[node[1]*2] == -1:node[0].right = Noneelse:b = Tree(nums[node[1]*2])node[0].right = bstack1.append([b, node[1]*2+1])else:node[0].right = Noneif not node[0].left and not node[0].right:res.append([node[0].val, node[1]])stack = stack1
res.sort(key=lambda x: x[0])
num = res[0][1]
cur = [num]
while num > 1:if num%2 == 0:num = num//2cur.append(num)else:num = (num-1)//2cur.append(num)
ans = []
for i in range(len(cur)-1, -1, -1):ans.append(nums[cur[i]-1])
print(' '.join(list(map(str, ans))))

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

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

相关文章

编程入门(三)【GPT工具的使用】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言背景了解GPT工具使用技巧GPT工具在学习和工作中的应用 前言 背景了解 2…

thinkphp6 Driver [Think] not supported.

问题的原因&#xff1a;使用view这个类但相应的库未安装&#xff08;新版仅内置了PHP原生模板引擎&#xff09; 官方解释&#xff1a;视图功能由\think\View类配合视图驱动&#xff08;也即模板引擎驱动&#xff09;类一起完成&#xff0c;新版仅内置了PHP原生模板引擎&#x…

Linux——操作系统与进程基本概念

Linux——操作系统与进程基本概念 文章目录 Linux——操作系统与进程基本概念一、冯诺依曼体系结构二、操作系统2.1 OS层次图2.2 操作系统的作用2.3 管理的理解 三、进程3.1 进程的概念3.2 描述进程—PCB3.3 PCB的内容3.3.1 查看进程3.3.2 标识符3.3.3 状态3.3.4 程序计数器3.3…

跨境电商干货:如何提升亚马逊店铺质量?

亚马逊作为全球最大的电子商务平台之一&#xff0c;吸引了无数卖家和买家参与其中。在这个竞争激烈的环境中&#xff0c;要想提升亚马逊店铺的质量和业绩&#xff0c;需要采取一系列有效的策略和工具。而住宅IP代理作为一个强大的网络工具&#xff0c;也在其中发挥着重要的作用…

OpenCV基本图像处理操作(八)——光流估计

光流估计 光流估计是一种用于检测图像序列中像素点运动的技术。它基于这样的假设&#xff1a;在连续的视频帧之间&#xff0c;一个物体的移动会导致像素强度的连续性变化。通过分析这些变化&#xff0c;光流方法可以估计每个像素点的运动速度和方向。 光流估计通常用于多种应…

【Python】Pandas常用基础使用案例

落花雨 你飘摇的美丽 花香氤 把往日情勾起 我愿意 化浮萍躺湖心 只陪你 泛岁月的涟漪 &#x1f3b5; 许嵩《山水之间》 Pandas是一个强大的Python数据分析工具库&#xff0c;它极大地简化了数据处理和分析的过程。无论你是数据科学初学者还是经验丰富的分…

任务修复实例(3)

Quest entry 24812 Quest name No More Mercy | 不再怜悯 -- Add AIName Field UPDATE world.creature_template SET AIName SmartAI WHERE entry IN (38442,38560,38932); -- Add aura for Zuni INSERT INTO world.creature_template_addon (entry, auras) VALUES (38932…

基于ssm冀中工程技师校园网站设计与实现论文

摘 要 使用旧方法对冀中工程技师学院网站的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在冀中工程技师学院网站的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次…

测试大佬揭秘写好简历的7个细节

简历是HR对候选人的第一印象&#xff0c;一个有经验的HR初筛一份2页A4纸的简历通常只有几十秒的时间&#xff0c;如果没有看到自己想看的东西&#xff0c;哪怕简历再厚很可能会被直接pass掉。 如果有兴趣&#xff0c;再花一两分钟仔细浏览一下候选人的基本情况&#xff0c;研究…

算法3:寻找数组的中心下标

给定一个整数数组 nums&#xff0c;请编写一个能够返回数组“中心下标” 的方法。 中心下标是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标&#xff0c;返回-1。如果数组有多个中心下标&#xff0c;应该返回最靠近左边的…

【Python】如何使用Python中的pandas库和scikit-learn库来实现逻辑回归模型

他们说快写一首情歌 雅俗共赏 落笔传神还要容易传唱 上得厅堂也下得厨房 就像我一直在找的姑娘 快写一首情歌雅俗共赏 打完字谜还要接着打榜 如果胡同弄堂全都播放 气韵里居然添了些孤芳自赏 &#x1f3b5; 许嵩《雅俗共赏》 数据准备 在开始建模之前&am…

最新最全的Jmeter接口测试必会技能:jmeter对图片验证码的处理

jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…

【C语言】——字符串函数的使用与模拟实现(下)

【C语言】——字符串函数的使用与模拟实现&#xff08;下&#xff09; 前言五、长度受限类字符串函数5.1、 s t r n c p y strncpy strncpy 函数5.2、 s t r n c a t strncat strncat 函数5.3、 s t r n c m p strncmp strncmp 函数 六、 s t r s t r strstr strstr 函数6.1、函…

vue2知识点1 ———— (vue指令,vue的响应式基础)

vue2的知识点&#xff0c;更多前端知识在主页&#xff0c;还有其他知识会持续更新 Vue 指令 Vue指令是Vue.js中的一个重要概念&#xff0c;用于向DOM元素添加特定行为或功能。Vue指令以v-开头&#xff0c;例如v-bind、v-if、v-for等。 v-bind 动态绑定属性 用法&#xff1a…

跟bug较劲的第n天,undefined === undefined

前情提要 场景复现 看到这张图片&#xff0c;有的同学也许不知道这个冷知识&#xff0c;分享一下&#xff0c;是因为我在开发过程中踩到的坑&#xff0c;花了三小时排查出问题的原因在这&#xff0c;你们说值不值。。。 我分享下我是怎么碰到的这个问题&#xff0c;下面看代码…

大数据:【学习笔记系列】Flink基础架构

Apache Flink 是一个开源的流处理框架&#xff0c;用于处理有界和无界的数据流。Flink 设计用于运行在所有常见的集群环境中&#xff0c;并且能够以高性能和可扩展的方式进行实时数据处理和分析。下面将详细介绍 Flink 的基础架构组件和其工作原理。 1. Flink 架构概览 Flink…

资料总结分享:《全外显子测序数据的流程和原理》

1外显子与测序&#xff0c;生信流程 1.1 外显子是什么&#xff1f; 外显子是基因组中能够转录组出成熟RNA的部分。一个基因组中所有外显子的集合&#xff0c;即为外显子组。值得注意的是&#xff0c;通常所说的全外显子组测序&#xff0c;是指针对蛋白编码基因的外显子&#x…

【RK3568】lt6911驱动采集RGB格式码流

此篇博客用以记录在rk3568下调试lt6911c芯片遇到的视频格式问题以及解决过程(内核版本4.19) 芯片的调试部分可以看RK3568调试lt6911c这篇文章。 问题描述 6911c芯片将HDMI信号转为mipi信号,转化后出来的原始数据格式是YUV422,得到yuv422后,直接送给rk3568编码 编码指令:…

【LeetCode热题100】【回溯】单词搜索

题目链接&#xff1a;79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 要在一个二维数组里面找到一条单词路径&#xff0c;可以先遍历二维数组找到单词入口&#xff0c;然后往上下左右深度遍历&#xff0c;访问过的元素直接修改成字符串结束符&#xff0c;访问完改回去 …

PyTorch深度学习之旅:从入门到精通的十个关键步骤

在人工智能的浪潮中&#xff0c;深度学习框架扮演着至关重要的角色。PyTorch作为其中的佼佼者&#xff0c;以其简洁、直观和灵活的特性&#xff0c;吸引了众多开发者与研究者。本文将引导您逐步掌握PyTorch&#xff0c;从基础概念到高级应用&#xff0c;让您在深度学习的道路上…