目录
题目
思路
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 层后取出节点值,使用集合