問題描述:從上往下列印出二叉樹的每個節點,同層節點從左至右列印。
思路分析:
從題意看這就是二叉樹的層次周遊,寬度優先搜尋問題。
借助兩個數組,一個用來存儲節點(這是一個隊列),另外一個用來存儲節點值(result)。
從根節點開始周遊節點,把每一層的節點都放進這個隊列中;
開始周遊這個隊列,将隊列的值以及放進result數組中最後傳回。
總結一下:
1)将根節點加入隊列
2)隊列不為空時取隊首元素的值append到result數組
3)将下一層節點加入隊列隊尾
4)傳回第二步,直到隊列為空結束
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 []
queue = [root]
result = []
while len(queue) > 0:
Hqueue = queue.pop(0)
result.append(Hqueue.val)
if Hqueue.left:
queue.append(Hqueue.left)
if Hqueue.right:
queue.append(Hqueue.right)
return result