**获取二叉树第k层的数值**
2026 华为OD机试真题 8月12日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
题目描述
给定一棵有根二叉树,请找出第 k 层上的所有节点值,去重后按升序输出。
这里默认根节点编号为 ,输入的边信息表示父子关系 [father, child]。
2026 华为OD机试真题 8月12日华为OD上机新系统考试真题 100 分题型
点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 + 双机位C卷 真题题库目录|全覆盖题库 + 逐点算法考点详解
输入描述
输入为四行:
n
vals
edges
k
n:节点数,节点编号为0 ~ n-1vals:长度为n的数组,vals[i]表示编号为i的节点值edges:二维数组,每个元素为[father, child],表示有向边k:层数,根节点所在层为
其中 vals 使用英文逗号分隔,edges 使用 JSON-like 二维数组格式。
输出描述
输出第 k 层所有节点值去重后的升序数组,格式为:
[v1,v2,v3]
若第 k 层不存在节点,则输出 []。
示例1
输入
5
5,3,8,3,7
[[0,1],[0,2],[1,3],[1,4]]
2
输出
[3,7]
示例2
输入
7
10,5,8,1,6,7,9
[[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]]
1
输出
[5,8]
示例3
输入
1
42
[]
0
输出
[42]
解题思路
核心思想
树的层级可以通过 BFS 一层层遍历得到。因为题目要求第 k 层节点值去重后排序,所以只要先找出第 k 层所有节点,再去重并升序输出即可。
算法步骤
- 读取节点数、节点值数组、边数组和层数
k。 - 根据父子边构建邻接表。
- 从根节点
开始做 BFS,逐层扩展。 - 当遍历到第
k层时,收集该层所有节点值。 - 对收集到的值去重并排序,按数组格式输出。
复杂度分析
设节点数为 n。
- 时间复杂度:
O(n log n),BFS 为O(n),排序去重后最坏为O(n log n)。 - 空间复杂度:`O(
版权声明:
作者:魔改工程师
链接:https://www.sylblog.xin/archives/831
文章版权归作者所有,未经允许请勿转载。
THE END