本题要求返回二叉树第 k 层所有节点的取值,输出需升序排序并去重。约定根节点位于第 0 层,因此第 k 层即「从根出发深度恰好为 k」的节点集合。
先根据 edges 建立子节点邻接表 children(children[p] 存放所有以 p 为父节点的子节点),再用 BFS 从根节点 0 出发遍历整棵树,并维护每个节点所在的层数:
给定一棵节点数为 n 的二叉树,树中每个节点均有一个节点编号和整型取值,节点编号取值 0 到 n−1,根节点所在层为第 0 层,其子节点为第 1 层,以此类推。
已知节点取值以及节点父子关系,请返回第 k 层节点取值列表,按升序排列并去重。
vals,vals[i] 表示编号为 i 的节点取值edges,edges 的子数组采用 [父节点编号, 子节点编号] 方式描述节点父子关系。例如:[[0,1],[0,2]] 中,[0,1] 表示节点 0 是节点 1 的父节点,同理 [0,2] 表示节点 0 是节点 2 的父节点其中 n 取值范围 1≤n≤1000,树的根节点固定编号为 0。节点值 −1000≤vals[i]≤1000。
第 k 层节点的取值列表,升序排列并去除重复值。
输入
7,[1,2,3,4,8,6,7],[[0,1],[0,2],[1,3],[1,4],[2,5],[2,6]],2
输出
[4,6,7,8]
说明
树结构如下所示:

如上图,位于第 2 层的节点为 3,4,5,6,对应的值为:4,8,6,7 升序排序后为:4,6,7,8
因此需要返回 [4,6,7,8]
输入
3,[10,20,20],[[0,1],[0,2]],1
输出
[20]
说明
树结构如下所示:

如上图:位于第 1 层的节点为 1,2 对应的值为 20,20,去重排序后为:20
因此返回 [20]
输入
1,[5],[],0
输出
[5]
说明
单节点树,第 0 层只有根节点 0,其对应取值为 5,因此返回的第 0 层取值为 [5]
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册