1. 程式人生 > >【劍指Offer】22從上往下列印二叉樹

【劍指Offer】22從上往下列印二叉樹

題目描述

從上往下打印出二叉樹的每個節點,同層節點從左至右列印。

時間限制:1秒;空間限制:32768K

解題思路

思路和層次遍歷相似,定義兩個list一個用來記錄當前層的節點,一個用來記錄當前每個節點的左右孩子節點,迴圈列印更新。

Python程式碼:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回從上到下每個節點值列表,例:[1,2,3]
    def PrintFromTopToBottom(self, root):
        # write code here
        if not root:
            return []
        currentStack = [] #當前層的節點
        currentStack.append(root)
        result = []
        while len(currentStack)!=0:
            nextStack = [] #下一層的子節點
            for i in range(len(currentStack)):
                result.append(currentStack[i].val)
                if currentStack[i].left != None:
                    nextStack.append(currentStack[i].left)
                if currentStack[i].right != None:
                    nextStack.append(currentStack[i].right)
            currentStack = nextStack
        return result