二叉树:二叉树输入根节点返回每层元素值的列表

 

 

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "Victor"
# Date: 2020/7/9



# 题目描述, 给定一颗二叉树, 返回每一层列表的列表
# 比如[[3], [5, 8], [2, 4, 5]], 3的左右是5,8, 5的左右是2, 4, 8的左是5

# 节点信息,注意只是伪代码,思考用
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: TreeNode) -> list[list[int]]:

        """
        二叉树的特色就是每个节点都包含着下一个节点的信息;

        需要一个队列以每层为基本处理单位,
        每次, 遍历每层,每层节点的值放入一个临时列表, 每层节点的下一级左右节点放入队列
        :param root:
        :return:
        """

        # 根节点为空直接返回
        if root == None:
            return []

        # 初始化队列条件, 肯定是初始化根节点
        queue = [root]

        # 总列表
        all_values = []

        # 总条件队列不为空即可一直对树处理节点
        while queue:

            # 每次处理一棵树一层的数据
            temp_value = []
            for i in range(len(queue)):

                tempNode = queue.pop(0)
                temp_value.append(tempNode.val)

                # 将该层的子节点添加到下次处理的队列中
                if tempNode.left:
                    queue.append(tempNode.left)
                if tempNode.right:
                    queue.append(tempNode.right)

            all_values.append(temp_value)

        return all_values

  

 

posted @ 2020-07-09 16:22  Adamanter  阅读(433)  评论(0)    收藏  举报