给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。

示例:

解题思路:使用常规的广度优先遍历就可以得到结果,这里需要稍微注意一下的是返回的得是链表,因此可以在遍历每一层的时候都创建一个链表,然后遍历结束的时候放到列表中。

# Definition for a binary tree node.  # 树节点的定义
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None# Definition for singly-linked list.  # 链表节点的遍历
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def listOfDepth(self, tree: TreeNode) -> List[ListNode]:if not tree:  # 如果树为空,则返回空列表return []queue = collections.deque()  # 创建一个队列queue.append(tree)  # 首先将树的根节点放进队列中lists = []  # 用于存储返回的链表while queue:  # 广度优先遍历,每次把当前节点的子树放进队列中list1 = ListNode(None)  # 创建一个空的链表cur = list1  # 因为list1在迭代中需要不断延伸,因此需要另一个节点保存链表起始值for _ in range(len(queue)):  # 对于树的每一层节点nums = queue.popleft()  # 取出队列中的起始点list1.next = ListNode(nums.val)  # 创建一个新的链表节点拼接到list1中list1 = list1.next  # 链表节点list1进行延伸if nums.left:    # 如果当前节点的左子树不为空,则放进队列中queue.append(nums.left)if nums.right:  # 如果当前节点的右子树不为空,则放进队列中queue.append(nums.right)lists.append(cur.next)    #  将每一层得到的链表存进列表中return lists    # 返回列表

leetcode —— 面试题 04.03. 特定深度节点链表相关推荐

  1. leetcode面试题 04.03. 特定深度节点链表(bfs)

    给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组.示例:输入:[1,2,3,4,5,null,7, ...

  2. 面试题 04.03. 特定深度节点链表

    面试题 04.03. 特定深度节点链表 思路:层次遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr ...

  3. 程序员面试金典 - 面试题 04.03. 特定深度节点链表(BFS)

    1. 题目 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 例: 输入:[1,2,3,4,5, ...

  4. 程序员面试金典:面试题 02.03. 删除中间节点

    1. 题目 面试题 02.03. 删除中间节点 2. 描述 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点. 示例: 输入: 单向链表 a->b-& ...

  5. 程序员面试金典 - 面试题 02.03. 删除中间节点

    1. 题目 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点. 示例: 输入:单向链表a->b->c->d->e-& ...

  6. leetcode面试题 04.12. 求和路径(dfs)

    给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负).设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量.注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下 ...

  7. 面试题 02.03. 删除中间节点

    2020-03-22 1.题目描述 删除中间节点 2.题解 之前好像做过这道题,直接将后一个节点的数据域赋值过来再删除后一个节点即可. 3.代码 class Solution { public:voi ...

  8. Leetcode —— 面试题 04.02. 最小高度树(Python)

    给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null ...

  9. 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)

    搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个.示例1 ...

最新文章

  1. 钉钉 python调用审批信息_python之钉钉审批导出
  2. 一个自定义python分布式爬虫框架。
  3. 银行存款又加码?三年期利率4.96%,按月付息,值得存吗?
  4. java读取文件(按字符或字节读取)
  5. 【经验】JavaScript
  6. Pixhawk更换GPS协议 由默认ublox更换为NMEA GPGGA格式
  7. JAVA毕业设计河南口腔医疗机构线上服务系统计算机源码+lw文档+系统+调试部署+数据库
  8. javaweb day14
  9. 联想昭阳E46A不能上网
  10. 41款非常有创意的卡通图标大全可爱
  11. java计算机毕业设计小小银动漫网站源码+lw文档+系统+数据库
  12. 智能交通卡口和电子警察解决方案
  13. python怎么换行输入print_python中print换行的方法
  14. 挑战七大排序算法-03选择排序
  15. 【B站】在电脑浏览B站视频时,暂停后自动播放的BUG
  16. 去掉数组中重复出现元素的算法
  17. ubuntu 安装mysql 源码,命令ubuntu上用源代码安装mysql的详细操作说明
  18. 金融分析:图形可视化plotly绘图思路—多子图教程
  19. 智慧旅游到全域旅游, 人们“旅游”的目的是什么?
  20. 2022.3.11 MATLAB课程作业

热门文章

  1. MySQL8.0内存相关参数介绍
  2. 在Nginx中支持HTTP3.0/QUIC
  3. Windows下自动备份Oracle数据库
  4. 消费者驱动的契约测试 Spring Cloud Contract介绍
  5. ZooKeeper入门指南
  6. 04737 c++ 自学考试2019版 第五章程序设计题 1
  7. 微信小程序入门一:点击事件
  8. C#LeetCode刷题之#705-设计哈希集合​​​​​​​(Design HashSet)
  9. python库之matplotlib
  10. telegram 机器人_我在周末构建了一个无服务器的Telegram机器人。 这是我学到的。...