美文网首页
LeetCode-102-二叉树的层序遍历

LeetCode-102-二叉树的层序遍历

作者: 阿凯被注册了 | 来源:发表于2020-11-13 17:35 被阅读0次

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],


image.png

解题思路:

  1. 用队列queue存储同一层的节点;
  2. 首先将root节点加入到queue,遍历该queue,将queue中的节点val写入tmp,并判断该node是否存在左叶子节点和右叶子节点,如果存在则写入queue,作为第二层的节点集合,下次遍历的就是该层的节点;
  3. 最后将tmp都写入到ans列表中。

Python3代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        res = []
        queue = [root]
        while queue:
            size = len(queue)
            tmp = []
            for i in range(size):
                node = queue.pop(0)
                tmp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(tmp)
        return res

相关文章

网友评论

      本文标题:LeetCode-102-二叉树的层序遍历

      本文链接:https://www.haomeiwen.com/subject/taqbbktx.html