1. 程式人生 > >劍指offer 60. 把二叉樹列印成多行

劍指offer 60. 把二叉樹列印成多行

題目描述

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

思路:

兩個棧,分二級,第一級存一行的數curStack,第二級存著一行數所對應的left,right的值nextStack,每次結束
一輪迴圈,把curStack的值給result,然後再將nodes設成nextStack繼續進行迴圈。

比上道題按照之字形列印二叉樹更簡單,連結合層數都省了。

參考答案:

# -*- 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 []
        res = []
        current_layer = [pRoot]
        while current_layer:
            layer_res = []
            next_layer = []
            for node in current_layer:
                layer_res.append(node.val)
                if node.left:
                    next_layer.append(node.left)
                if node.right:
                    next_layer.append(node.right)
            res.append(layer_res[:])
            current_layer = next_layer[:]
        return res

Note

  • 注意,其中current_layer 的結果 current_layer = next_layer[:]