华为OD机试真题 新系统 2026-08-12 C++【获取二叉树第k层的数值】 目录题目思路Code题目题目内容:给定一棵有根二叉树,请找出第 k 层上的所有节点值,去重后按升序输出。根节点编号固定为 0,输入边 [father,child] 表示父子关系,根节点所在层为第 0 层。输入描述:输入共四行。第一行是节点数 n,节点编号为 0 到 n-1。第二行是长度为 n 的 vals,vals[i] 表示节点 i 的值。第三行是边数组 edges。第四行是目标层数 k。输出描述:输出第 k 层节点值去重后的升序数组;该层不存在节点时输出 []。样例 1输入:5 5,3,8,3,7 [[0,1],[0,2],[1,3],[1,4]] 2输出:[3,7]思路整体思路:先根据父子边建立邻接表,再从根节点 0 开始按层进行广度优先搜索。第一步:children[father] 保存该父节点的所有孩子,输入保证整体是一棵合法二叉树。第二步:队列初始只有根节点,每推进一轮就把当前层整体替换成下一层。第三步:推进到第 k 层后取出节点值,使用集合去重,再按升序输出。/