leetcode —— 面试题 04.03. 特定深度节点链表
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 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. 特定深度节点链表相关推荐
- leetcode面试题 04.03. 特定深度节点链表(bfs)
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组.示例:输入:[1,2,3,4,5,null,7, ...
- 面试题 04.03. 特定深度节点链表
面试题 04.03. 特定深度节点链表 思路:层次遍历 /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr ...
- 程序员面试金典 - 面试题 04.03. 特定深度节点链表(BFS)
1. 题目 给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表).返回一个包含所有深度的链表的数组. 例: 输入:[1,2,3,4,5, ...
- 程序员面试金典:面试题 02.03. 删除中间节点
1. 题目 面试题 02.03. 删除中间节点 2. 描述 实现一种算法,删除单向链表中间的某个节点(即不是第一个或最后一个节点),假定你只能访问该节点. 示例: 输入: 单向链表 a->b-& ...
- 程序员面试金典 - 面试题 02.03. 删除中间节点
1. 题目 实现一种算法,删除单向链表中间的某个节点(除了第一个和最后一个节点,不一定是中间节点),假定你只能访问该节点. 示例: 输入:单向链表a->b->c->d->e-& ...
- leetcode面试题 04.12. 求和路径(dfs)
给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负).设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量.注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下 ...
- 面试题 02.03. 删除中间节点
2020-03-22 1.题目描述 删除中间节点 2.题解 之前好像做过这道题,直接将后一个节点的数据域赋值过来再删除后一个节点即可. 3.代码 class Solution { public:voi ...
- Leetcode —— 面试题 04.02. 最小高度树(Python)
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树. 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null ...
- 60. Leetcode 面试题 10.03. 搜索旋转数组 (二分查找-局部有序)
搜索旋转数组.给定一个排序后的数组,包含n个整数,但这个数组已被旋转过很多次了,次数不详.请编写代码找出数组中的某个元素,假设数组元素原先是按升序排列的.若有多个相同元素,返回索引值最小的一个.示例1 ...
最新文章
- 钉钉 python调用审批信息_python之钉钉审批导出
- 一个自定义python分布式爬虫框架。
- 银行存款又加码?三年期利率4.96%,按月付息,值得存吗?
- java读取文件(按字符或字节读取)
- 【经验】JavaScript
- Pixhawk更换GPS协议 由默认ublox更换为NMEA GPGGA格式
- JAVA毕业设计河南口腔医疗机构线上服务系统计算机源码+lw文档+系统+调试部署+数据库
- javaweb day14
- 联想昭阳E46A不能上网
- 41款非常有创意的卡通图标大全可爱
- java计算机毕业设计小小银动漫网站源码+lw文档+系统+数据库
- 智能交通卡口和电子警察解决方案
- python怎么换行输入print_python中print换行的方法
- 挑战七大排序算法-03选择排序
- 【B站】在电脑浏览B站视频时,暂停后自动播放的BUG
- 去掉数组中重复出现元素的算法
- ubuntu 安装mysql 源码,命令ubuntu上用源代码安装mysql的详细操作说明
- 金融分析:图形可视化plotly绘图思路—多子图教程
- 智慧旅游到全域旅游, 人们“旅游”的目的是什么?
- 2022.3.11 MATLAB课程作业
热门文章
- MySQL8.0内存相关参数介绍
- 在Nginx中支持HTTP3.0/QUIC
- Windows下自动备份Oracle数据库
- 消费者驱动的契约测试 Spring Cloud Contract介绍
- ZooKeeper入门指南
- 04737 c++ 自学考试2019版 第五章程序设计题 1
- 微信小程序入门一:点击事件
- C#LeetCode刷题之#705-设计哈希集合​​​​​​​(Design HashSet)
- python库之matplotlib
- telegram 机器人_我在周末构建了一个无服务器的Telegram机器人。 这是我学到的。...