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

devtools/2024/9/18 13:42:38/ 标签: 算法, 面试, 数据结构

■ 题目描述

【数组二叉树】

二叉树也可以用数组来存储,给定一个数组,树的根节点的值存储在下标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.ppmy.cn/devtools/12906.html

相关文章

Typora for Mac:轻量级Markdown编辑器

Typora for Mac是一款专为Mac用户设计的轻量级Markdown编辑器&#xff0c;它以其简洁的界面和强大的功能&#xff0c;成为了Markdown写作爱好者的首选工具。 Typora for Mac v1.8.10中文激活版下载 Typora的最大特色在于其所见即所得的编辑模式&#xff0c;用户无需关心复杂的M…

Jackson知识点记录

文章目录 一.Jackson模块说明 二.ObjectMapper基本功能使用ObjectMapper的一些核心方法&#xff1a;示例代码1. 序列化示例2. 反序列化示例3. JsonNode 处理示例 高级配置 三.各种Node1. ObjectNode2. ArrayNode3. ValueNode4. MissingNode示例 一.Jackson Jackson 库主要分为…

JVM体系结构

1. JVM简介 1.1 什么是JVM JVM&#xff08;Java Virtual Machine&#xff09;是Java平台的核心组件之一。它是一个运行Java字节码&#xff08;Java bytecode&#xff09;程序的虚拟机&#xff0c;是Java程序跨平台运行的基石。 JVM的主要功能如下&#xff1a; 1、Java字节码执…

非洲美食多样性而丰富多彩

非洲美食因其地域广阔和民族多样性而丰富多彩&#xff0c;每个国家和地区都有独特的烹饪传统和饮食文化。以下列举一些非洲各地的代表性美食&#xff1a; 肯尼亚&#xff1a; Ugali&#xff1a;一种主要由玉米面制成的团状食物&#xff0c;搭配各种炖煮的蔬菜、豆类和肉类食用。…

Linux编辑器gcc/g++的使用以及Makefile的用法

gcc如何完成 格式 gcc [选项] 要编译的文件 [选项] [目标文件] gcc对code.c编译形成可执行文件mybin&#xff0c;十分推荐直接这样写&#xff0c;下面会有拆分写法&#xff08;不推荐&#xff09; gcc与我们使用过的编辑器无二&#xff0c;都需要经过 1. 预处理&#xff08;…

利用HttpClient库下载蚂蜂窝图片

前言 网络爬虫技术作为互联网数据获取的重要工具&#xff0c;在各行各业都有着广泛的应用。而在本文中&#xff0c;我们将利用Java中的HttpClient库&#xff0c;通过编写一个简单而有效的网络爬虫程序&#xff0c;实现下载蚂蜂窝网站的图片的功能。通过这个例子&#xff0c;我…

网络教学管理系统

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 网络教学管理系统拥有三种角色 管理员&#xff1a;专业管理、班级管理、学生教师管理、公告管理、留言板管理、学习资料管理、教学视频管理、试题管理等 教师&#xff1a;系统留言、发布…

笔记本电脑耗电和发热比较厉害怎么处理

工作中会遇到有同事反馈笔记本电脑耗电和发热比较厉害&#xff0c;主要检查以下几个地方 1、CPU频率 很多人觉得是cpu使用率高就代表电脑跑得快&#xff0c;发热量就大&#xff0c;其实不是的&#xff0c;主要是看的cpu频率&#xff0c;频率越高&#xff0c;电脑发热量越大。如…

力扣hot100:136. 只出现一次的数字 及其衍生

文章目录 一、LeetCode&#xff1a;136. 只出现一次的数字 使用到的异或运算的特点&#xff1a; 两个相同的数异或&#xff0c;结果为0 一、LeetCode&#xff1a;136. 只出现一次的数字 LeetCode&#xff1a;136. 只出现一次的数字 这里数组nums的特点是&#xff0c;除了一…

flink1.18.0 流转表 表转流 jdk17 attachAsDataStream

目的 流表互转 而且流sink 表sink同时存在且都可以输出. 依赖类 package flink.luca.flinkTableAndSQL.Convert;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class Outer…

hot100-图论/岛屿问题

问题模板 为什么要将格子标记为【已遍历】—避免 重复遍历 &#xff08;这是因为&#xff0c;网格结构本质上是一个「图」&#xff0c;我们可以把每个格子看成图中的结点&#xff0c;每个结点有向上下左右的四条边。在图中遍历时&#xff0c;自然可能遇到重复遍历结点。这时候&…

实验室三大常用仪器2---函数信号发生器的基本使用方法(笔记)

目录 函数信号发生器的基本使用方法 如何连接函数信号发生器和示波器 实验室三大常用仪器1---示波器的基本使用方法&#xff08;笔记&#xff09;-CSDN博客 实验室三大常用仪器3---交流毫伏表的使用方法&#xff08;笔记&#xff09;-CSDN博客 示波器是用来显示和测量信号的…

《ElementPlus 与 ElementUI 差异集合》el-select 差异点,如:高、宽、body插入等

宽度 Element UI 父元素不限制宽度时&#xff0c;默认有个宽度 207px&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#xff1b; Element Plus 父元素不限制宽度时&#xff0c;默认100%&#xff1b; 父元素有固定宽度时&#xff0c;以父元素宽度为准&#x…

海外媒体广告投放 - 大舍传媒助力企业迈向新台阶,实现精准投放

一、为何选择海外媒体广告投放 随着全球化进程的不断推进&#xff0c;越来越多的企业开始将目光投向国际市场。海外媒体广告投放作为一种有效的宣传手段&#xff0c;可以帮助企业在全球范围内提高品牌知名度和影响力&#xff0c;吸引潜在客户&#xff0c;促进产品销售。 二、…

操作系统——进程调度

进程调度 进程调度是&#xff0c;当操作系统有多个进程需要执行时&#xff0c;操作系统来决定资源分配和进程执行顺序的一个机制。 常见的进程调度算法有&#xff1a; 先来先服务算法&#xff08;FCFS&#xff09;&#xff1a;按照进程提交的顺序进行服务短作业优先算法&…

Uint8ClampedArray语法记录

Uint8ClampedArray是一种类型化数组&#xff08;TypedArray&#xff09;&#xff0c;用于存储以8位整数表示、取值范围在0和255之间的无符号整数。它与Uint8Array类似&#xff0c;但在处理赋值操作时具有特定的行为。下面将详细介绍Uint8ClampedArray的概念、使用方法和注意事项…

研究发现:提示中加入数百个示例显著提升大型语言模型的性能

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

html网页在展示时,监听网络是否断网,如果断网页面暂停点击响应

序言&#xff1a; 集合百家之所长&#xff0c;方著此篇文章&#xff0c;废话少说&#xff0c;直接上代码&#xff0c;找好你的测试网页&#xff0c;进行配置&#xff0c;然后复制粘贴代码&#xff0c;就可以了。 1.css文件内容 #newbody{display: none;width: 100%;height: 9…

【Linux】解决切换用户出现bash-4.2$问题

切换用户出现 bash 4.2 问题 出现 bash 4.2 错误 发现是用户指定家目录下 缺少2个隐藏文件 这题前提条件 我指定的家目录是 /opt/{孙悟空,猪八戒,唐僧,沙悟净} /etc/skel/.bashrc /etc/skel/.bash_profile 传过去后显示登录成功 问题展示&#xff1a; [rootlocalhost…

聊聊 Linux iowait

哈喽大家好&#xff0c;我是咸鱼。 我们在使用 top 命令来查看 Linux 系统整体 CPU 使用情况的时候&#xff0c;往往看的是下面这一列&#xff1a; %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 68.0 wa, 0.0 hi, 0.0 si, 0.0 st其中&#xff0c;man 手册解释 wa 表示 …