1. 程式人生 > >劍指offer:把二叉樹列印成多行(python)

劍指offer:把二叉樹列印成多行(python)

題目描述

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

思路:

1、把每層節點的val值用list存好

2、把每層節點存好:

①計算當層節點的個數,這樣就保證下一步每層的結點都被pop光

②然後依次彈出從左到右的每個節點,然後在list中加入該節點對應的左結點、右節點(如果存在的話)

# -*- 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):
        if not pRoot :
            return []
        queue = [pRoot]
        result = []
        while (queue):
            size = len(queue)
            row = []
            for i in queue:
                row.append(i.val)
            result.append(row)
            for i in range(size):
                node = queue.pop(0)
                if (node.left is not None):
                    queue.append(node.left)
                if (node.right is not None):
                    queue.append(node.right)
        return result