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

2021-08-18 21:47:58 字數 787 閱讀 7515

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

思路: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:

for i in range(size):

node = queue.pop(0)

if (node.left is not none):

if (node.right is not none):

return result

劍指Offer 把二叉樹列印成多行

題目描述 從上到下按層列印二叉樹,同層結點按從左向右的順序列印,每一層列印到一行。例如8 6 10 5 7 9 11 類似於按層遍歷二叉樹,利用廣度優先遍歷的思想,選擇stl的佇列。step1 把起始節點放到佇列當中。step2 每一次從佇列頭部取出乙個結點,遍歷過這個節點後,把它能到達的其他節點 ...

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

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路就是借助兩個輔助單向佇列queue來實現,暫且叫他們help1和help2。先把根節點壓入help1,然後依次取出help1裡面的元素,將其值放入儲存結果的vector中,並將其左右節點壓入help2,直至help1為空。此時hel...

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

從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。用佇列來實現按行列印,但是由於要分層列印,需要區分每一行,所以要用乙個tmp來記錄每層列印出的結果 coding utf 8 class treenode def init self,x self.val x self.left non...