把二叉树打印成多行Python

题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

思路:如果根节点为空,直接返回一个空列表即可

    如果不为空,我们可以设置一个循环,此时进入循环,

    我们需要两个列表,一个记录当前层需要输出的元素,另一个记录下一层的节点(用条件判断,当左右子树存在的时候就记录下来)

    记得更新循环条件,循环体外用一个列表记录下当前层的元素,当其为空时候,不进入while循环,内部因为一层可能有多个元素,可以再用一个for循环

    还有每次循环结束时,返回当前层的元素,达到每一层输出一行的效果。

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回二维列表[[1,2],[4,5]]
    def Print(self, pRoot):
        # write code here
            if not pRoot:    
                return []
            a=[pRoot]
            b=[]
            while a:
                c=[]
                d=[]
                for i in a:
                    d.append(i.val)
                    if i.left:
                        c.append(i.left)
                    if i.right:
                        c.append(i.right)
                a = c
                b.append(d)
            return b

  

猜你喜欢

转载自www.cnblogs.com/cong3Z/p/12940195.html