题解 | #求二叉树的层序遍历#

求二叉树的层序遍历

https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param root TreeNode类
# @return int整型二维数组
#
from collections import deque


class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        # write code here
        if root == None:
            return []

        queue = deque()
        l = []
        queue.append(root)
        while(len(queue)>0):
            # cur = queue.popleft()
            row = []
            size = len(queue)
            # row.append(cur.val)
            for i in range(size):
                cur = queue.popleft()
                row.append(cur.val)
                if cur.left:
                    queue.append(cur.left)

                if cur.right:
                    queue.append(cur.right)
            l.append(row)
        return l

用队列解决这个问题

广度优先搜索:一层一层遍历二叉树

遍历到一个节点,将其左右子节点加入到队列中;

在进入新的一行的时候,计算其长度size,在队列中前size个元素都放到row的列表中

while每循环一次,就是进入了新的一层

#我的实习求职记录#
实习算法题题解 文章被收录于专栏

实习算法题

全部评论

相关推荐

04-15 23:42
中山大学 Java
ResourceUtilization:过几天楼主就会捧着一堆offer来问牛友们该怎么选辣
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务