美文网首页
leetcode 102 python 二叉树层次遍历

leetcode 102 python 二叉树层次遍历

作者: 慧鑫coming | 来源:发表于2019-03-06 09:30 被阅读0次

    传送门

    题目要求

    给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

    例如:
    给定二叉树: [3,9,20,null,null,15,7],

        3
       / \
      9  20
        /  \
       15   7
    

    返回其层次遍历结果:

    [
      [3],
      [9,20],
      [15,7]
    ]
    

    思路:

    首先将根节点入队,从根节点开始,循环当前队列长度的次数(即本层节点的个数),出队遇到的每个节点,看其是否有子节点,有的话入队(这是将下一层的所有节点入队)。并用临时变量(列表)记录当前层每个节点的值,循环结束后(本层节点遍历完成后)加入结果集。

    # 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]]:
            res = []
            if not root:
                return res
            p = []
            p.append(root)
            while len(p) != 0:
                tmp = []
                for i in range(len(p)):
                    r = p.pop(0)
                    if r.left:
                        p.append(r.left)
                    if r.right:
                        p.append(r.right)
                    tmp.append(r.val)
                res.append(tmp)
            return res
             
    

    相关文章

      网友评论

          本文标题:leetcode 102 python 二叉树层次遍历

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