剑指offer之把二叉树打印成多行(Python)

来源:互联网 发布:263网络会议室 编辑:程序博客网 时间:2024/06/10 00:21

题目描述

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

思路:

1、把每层节点的val值用list存好

2、把每层节点存好:

①计算当层节点的个数,这样就保证下一步每层的结点都被pop光

②然后 依次弹出从左到右的每个节点,然后在list中加入该节点对应的左结点、右节点(如果存在的话)

代码如下:

class TreeNode():    def __init__(self,x):        self.val = x        self.left = None        self.right = Nonedef function(root):    result = []    if not root:        return result    A = []    A.append(root)    while A:        temp = []        size = len(A)        for Node in A:            temp.append(Node.val)        result.append(temp)        for i in range(size):            node = A.pop(0)            if node.left:                A.append(node.left)            if node.right:                A.append(node.right)    return result 

原创粉丝点击