本文主要是介绍Leetcode面试题32 - I. 从上到下打印二叉树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
"""
面试题32 - I. 从上到下打印二叉树
难度中等
12从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
""""""
算法流程:
特例处理:当树的根节点为空,则直接返回空列表 [] ;
初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [root] ;
BFS 循环:当队列 queue 为空时跳出;出队:队首元素出队,记为 node;打印:将 node.val 添加至列表 tmp 尾部;添加子节点:若 node 的左(右)子节点不为空,则将左(右)子节点加入队列 queue ;
返回值: 返回打印结果列表 res 即可。
"""# Definition for a binary tree node.
class TreeNode:def __init__(self, x):self.val = xself.left = Noneself.right = None# 方法一:
class Solution:def levelOrder(self, root) :""":param root: TreeNode:return: List[int]"""# BFS iteration, use queue# time: O(N) N: the number of the nodes# space: O(N) N: the length of res, traverse all the nodes# emptyif not root: return []queue = [root]res = []while queue:# when queue is not empty, pop node from the head of queuenode = queue.pop(0)# put the value of the node into resres.append(node.val)if node.left:queue.append(node.left)if node.right:queue.append(node.right)return res# 正用例
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(5)s = Solution()
print(s.levelOrder(root))# 反用例:空
s = Solution()
root = TreeNode([])
print(s.levelOrder(root))
这篇关于Leetcode面试题32 - I. 从上到下打印二叉树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!