经典面试题(三十六)-- 特定深度节点链表
发布于 2021-09-07 11:07 ,所属分类:2021面试经验技巧分享
来源:LeetCode
难度:中等
描述:
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例1:
输入:[1,2,3,4,5,null,7,8]
1
/ \
2 3
/ \ \
4 5 7
/
8
输出:[[1],[2,3],[4,5,7],[8]]
分析:
本题是给我们一棵二叉树,让咱们将树的每层中的节点串连起来形成链表,然后返回所有层级的链表数组。
其实归根结底考察的还是二叉树的层序遍历和链表的构建,具体解法如下
解题
方法一:广度优先遍历
思路:
采用广度优先遍历的方式对二叉树进行层层遍历
利用队列存储二叉树每层的节点。队列的size就是当前层二叉树节点个数,因此每次循环只需将前size个节点出队即可完成本层元素的遍历。
队头就是每层最左边的节点,因此每次循环根据队头构建链表头节点,同时将队头元素的左右节点入队,并且根据1~size个元素构建链表剩余节点
代码:
1publicListNode[]listOfDepth(TreeNodetree){
2if(tree==null){
3returnnull;
4}
5//结果数组
6List<ListNode>ans=newArrayList<>();
7//广度队列
8Queue<TreeNode>queue=newLinkedBlockingQueue<>();
9queue.add(tree);
10
11while(!queue.isEmpty()){
12intsize=queue.size();
13//先根据队首构造链表头结点
14ListNodehead=newListNode(queue.peek().val);
15//根节点如数组
16ans.add(head);
17ListNodetemp=head;
18for(inti=0;i<size;i++){
19TreeNoderoot=queue.poll();
20if(i!=0){
21//剩余队列元素构建链表其余节点
22temp.next=newListNode(root.val);
23temp=temp.next;
24}
25//左右子节点入队
26if(root.left!=null){
27queue.add(root.left);
28}
29if(root.right!=null){
30queue.add(root.right);
31}
32}
33}
34
35returnans.toArray(newListNode[0]);
36}
时间复杂度:O(n) n为节点个数
空间复杂度:O(n)
以上仅是个人思路解法,觉得还不错欢迎点赞分享
往期精彩推荐
二叉树(十一)--二叉树展开为链表
十大经典排序(九)--桶排序
数组篇(五) -- 路径总和 II


![[JAVA面试题] 传智博客Java就业班面试资料java面试题(程序猿面试技巧+常见笔试题分析) 六讲](https://static.kouhao8.com/sucaidashi/xkbb/78347caafea46f36a69b5d05ca66ad05.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
![[就业指导] Java面试题专属视频 最新Java阿里京东美团滴滴java面试题及答案教程](https://static.kouhao8.com/sucaidashi/xkbb/be2bcf6c23bac0005fdd61e16024bd9c.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)


![[JAVA面试题] Java BAT大型公司面试专属必备技能视频教程](https://static.kouhao8.com/sucaidashi/xkbb/faf2918ea254fd9be00db2eca82f6b78.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)


![[就业指导] Java面试题视频找工作不用愁](https://static.kouhao8.com/sucaidashi/xkbb/979e2e0a2e6f5a53ab3c1bff94ed0e20.jpg?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)



![[就业指导] Java面试专属视频 最新Java阿里京东美团滴滴面试题及答案教程](https://static.kouhao8.com/sucaidashi/xkbb/fb2f88633d9be374ae995992b13e7779.jpg?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
![[java面试题] 尚硅谷1024程序员福利之java学科新增面试宝典视频教程](https://static.kouhao8.com/sucaidashi/xkbb/f5826c371702bac5fb45b06bb7c24342.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)




![JAVA面试题] 极客JavaWeb工程师全套视频教程 (初级+中级+高级) 一共485集 送面试辅导](https://static.kouhao8.com/sucaidashi/xkbb/439729a81224e1d2bd719383b03cd0dc.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
![[就业指导] 2017最新IOS面试必看题教程 尚学堂 iOS面试题 视频教程 教学视频](https://static.kouhao8.com/sucaidashi/xkbb/49649e1f340e7901b2b85424b87b24d4.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
![[Python] Python实战视频教程 基于Python项目与面试题讲解-Python核心技术进阶训练篇](https://static.kouhao8.com/sucaidashi/xkbb/ca6c1f3f4d1532b281ecdc1542c96831.jpg?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)


![[项目实战] Python实战视频教程 Python核心技术进阶训练篇 基于Python项目与面试题](https://static.kouhao8.com/sucaidashi/xkbb/cce0cbfcce42787e572f6df16e475cc9.jpg?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)

![[项目实战] Python实战视频教程 Python核心技术进阶训练篇 基于Python项目与面试题讲解](https://static.kouhao8.com/sucaidashi/xkbb/110e0fb426046bcd7b8eeef1cdf23231.png?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
![[iOS] 极客学院 高级编程课程视频 iOS开发工程师 全程培养计划 9.2G 讲解必会面试题](https://static.kouhao8.com/sucaidashi/xkbb/fed110993a9d98e708b2a116de6749bc.jpg?x-oss-process=image/format,webp/resize,w_88/crop,w_88,h_88,g_nw)
相关资源