題目描述
從上往下列印出二叉樹的每個節點,同層節點從左至右列印,解題思路:
這個題目其實非常基礎了,也就是直接使用BFS廣度優先搜索演算法對整棵二叉樹進行遍歷即可,我們最后回傳的是一個陣列 "[]",把遍歷之后的元素放到這個陣列當中即可,為了進行BFS,我們首先新建一個佇列,將樹根部的節點放到佇列里,然后彈出,彈出的同時將剛剛彈出的Node下面的兩個節點放到佇列的后面,這樣在回圈當中又可以遍歷后面的Node了,也就是誰被彈出來了,誰也就會被放入到這個串列里,同時將彈出這個數值的子樹的node放到佇列queue里面,這個題比較特殊,我們回傳的是一個串列,因此即使給定的root里面啥也沒有,我們回傳的則是空串列而不是None,代碼如下所示:
# -*- 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 root == None: return [] ret = [] queue = [] queue.append(root) while queue: now_node = queue.pop(0) ret.append(now_node.val) if now_node.left != None: queue.append(now_node.left) if now_node.right != None: queue.append(now_node.right) return (ret)
下面我們建立一個簡單的二叉樹來模擬這個程序:

這個題目也是一個經典的模板題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/145121.html
標籤:其他
