【二叉树】用数组给出二叉树层序遍历序列,建树以及遍历问题

news/2025/1/23 19:54:22/文章来源:https://www.cnblogs.com/Tshaxz/p/18688564

传递悄悄话

image

层序遍历数组形式的下标如下
image


#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;const int N = 1010, M = N * 2;int n;
int h[N], e[M], ne[M], idx;
int v[N], dist[N];
bool st[N];void add(int a, int b)
{e[idx] = b, ne[idx] = h[a], h[a] = idx++;
}void dfs(int u)
{st[u] = true;for (int i = h[u]; i != -1; i = ne[i]){int j = e[i];if (!st[j]) {dist[j] = dist[u] + v[j];dfs(j);}}
}int main()
{ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);memset(h, -1, sizeof h);int x;while (cin >> x) v[++n] = x;for (int i = 1; i <= n / 2; i++)//二叉树的最后一个分支(非叶)节点为n/2{if (v[i] == -1) continue;int a = i * 2, b = i * 2 + 1;//若下标在范围内且左右儿子存在if (a <= n && v[a] != -1) add(i, a), add(a, i);//无向边if (b <= n && v[b] != -1) add(i, b), add(b, i);}dfs(1);//1号点为根节点int res = 0;//dist数组存的是根节点1到其他所有点的距离for (int i = 1; i <= n; i++) res = max(res, dist[i]);cout << res << '\n';return 0;
}

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

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

相关文章

关闭 Visual Studio 2022 的 Browser Link 功能

http://blog.tool90.com/330.html什么是 Browser Link 功能? Browser Link 是 Visual Studio 的一个功能,它允许 Visual Studio 与正在运行的 ASP.NET 应用程序建立一个实时通信通道。这意味着您可以在不刷新浏览器的情况下立即查看代码更改的效果。这个功能在进行前端开发时…

2025dsfz集训Day11:数位DP、状态压缩DP、单调队列优化DP

Day11:数位DP、状压DP、单调队列优化DP 经典题目:AccodersP2195 |【一本通提高数位动态规划】Amount of Degrees 题意: 求出区间 \([x,y]\) 中满足下面条件的所有的数:这个数 \(x\) 可以用 \(k\) 个不相等的 \(b\) 的整数幂之和。 首先这个区间是满足区间减法的。因此我们可…

PO报错

这个报错是报文结构不匹配导致,找了好久的问题--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------…

2025dsfz集训Day11: 单调队列优化DP

单调队列优化DP 单调队列队列是单调的,递增或递减 只能在队首或者队尾进行操作 队列中维护所有在窗口中的元素,有一些元素是没用的,以区间最大值为例:所以从左到右尝试加入队列,弹出队尾比当前数更小的元素,弹出队首已经出窗口的元素,再队尾压入当前数 这样,队首就是窗口…

必应搜索中,当地区设置为美国时出现的异常(未解决)

描述 在设置中,设置地区。加载时,会警告如下: An iframe which has both allow-scripts and allow-same-origin for its sandbox attribute can escape its sandboxing.这个大致的意思是,allow-scripts允许运行脚本,allow-same-origin视为和宿主网页同源。 具体的影响不清…

做抖音矩阵是否需要很多台手机?

做抖音矩阵是否需要很多台手机?做抖音矩阵不一定要很多台手机,可依据不同情况选择合适方式: 使用多台手机 优势:物理隔离确保账号间完全独立,极大降低因设备关联导致的风险。比如,若一台手机上的账号因违规操作被封,不会影响其他手机上的账号。同时,多台手机能同时进行…

【Neo4j知识图谱数据库】入门

在当今大数据和人工智能的时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文将带大家从入门到精通,了解知识图谱及其存储工具Neo4j的方方面面,包括知识图谱的介绍、Neo4j的特点、安装步骤、具体的使用方法(创建、查询),以及Cypher查询语言的详细讲…

jumpserve Linux 单机部署

参考文档:https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/offline_upgrade/1、环境要求 1.1、操作系统1.2、数据库2、离线安装从飞致云社区 下载最新的 linux/amd64 离线包, 并上传到部署服务器的 /opt 目录https://community.fit2cloud.com/#/produ…

【AI应用开发】 向量和向量数据

一、什么是向量 向量vector 通常出现在自然语言NLP领域,NLP中称为词嵌入word embedding,词嵌入的工作就是如何将人类语言中的词汇、短语或句子转化为计算机能够理解和操作的数学向量。具体的,词嵌入(Word Embedding),是一种将词汇表中的每个单词或短语映射到一个固定大小…

云--什么是rest

https://www.whatisrest.com/已停用已被其他组织或个人用于其他服务

FDUWC2025 游记

夏虫振翅向灼热光明cnblogs 链接 退役老人人生第一次在网上写游记 qwq Day 0 到达国际大都市上海。这是我第二次来上海玩了,但是感觉 fdu 那一片和我印象中的上海不一样。上一次来没有注意,这一次来发现上海的车道少且窄,容易堵车,而且绿牌车的占比看起来比广州都高。冬天的…

Markdown学习day01

Markdown语法学习 标题:用#加Enter键:# +标题,有几个#就是几级标题 #+空格+标题 ##+空格+标题 ###+空格+标题 ####+空格+标题 #####+空格+标题 字体 粗体,两边加**; 字体 斜体,两边加*; 字体 斜体加粗,两边加***; 字体 删除线,两边加~~; 字体 引用 使用>+空格引用…