算法题:102.二叉树的层序遍历
  DosddciaWHNX 2023年12月01日 23 0


层序遍历,看似简单,实则陷阱很多,怪不得该题目被认定为中等难度题。此处运用了迭代求解法。(完整题目附在了最后)

算法题:102.二叉树的层序遍历_算法

# Definition for a binary tree node.
class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right


class Solution:
    def levelOrder(self, root):  # 层序排列
        if not root:
            return []
        res = []
        queue = [root]
        while len(queue) > 0:
            size = len(queue)
            temp = []
            for i in range(size):  # 确保了每层的结点值在同一个数组内
                # 通过append、pop(0)的方法用数组构造了一个先进先出的列表
                node = queue.pop(0)  
                temp.append(node.val)
                if node.left:
                    queue.append(node.left)
                if node.right:
                    queue.append(node.right)
            res.append(temp)

        return res


if __name__ == '__main__':
    # 创建一个二叉树
    tree = TreeNode(3)
    tree.left = TreeNode(9)
    tree.right = TreeNode(20)
    tree.right.left = TreeNode(15)
    tree.right.right = TreeNode(7)

    # 执行层序遍历
    sol = Solution()
    print(sol.levelOrder(tree))  # [[3], [9, 20], [15, 7]]

 完整题目:

102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

算法题:102.二叉树的层序遍历_算法_02


输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]]


示例 2:


输入:root = [1] 输出:[[1]]


示例 3:


输入:root = [] 输出:[]


提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: maven配置多仓库 下一篇: C++11 lambda
  1. 分享:
最后一次编辑于 2023年12月01日 0

暂无评论

推荐阅读
  fwjWaDlWXE4h   16天前   20   0   0 Python
DosddciaWHNX