劍指 面試題32 2 從上到下列印二叉樹II

2021-10-04 16:22:09 字數 1623 閱讀 3667

題目

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行

思路:

1、整體的思路還是用佇列實現層次遍歷,設定兩個計數變數:

(1)next_level表示下一層的節點數,初始為0,每進佇列乙個就加一;

(2)wait_prined表示當前層待列印的數量,初始為1(根節點)

2、當一層列印完畢wait_printed為0時,更新這兩個變數:

(1)wait_prined = next_level;

(2)next_level=0;

3、oj上需要提交vector>和list [ list [ int ] ],所以每次更新兩個變數的時候也把記錄這一層節點的vector和list清空。

c++

/**

* definition for a binary tree node.

* struct treenode

* };

*/class

solution

if(pnode-

>right)

queue.

pop_front()

;--wait_prined;

if(wait_prined==0)

}return res;}}

;

python

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

levelorder

(self, root: treenode)

-> list[list[

int]]:

res =

level =

queue =

if root==

none

:return res

next_level =

0# 下一層節點數

wait_printed =

1# 當前層待列印數

while

len(queue)

: temp = queue[0]

if temp.left:

next_level +=

1if temp.right:

next_level +=

1 queue.pop(0)

wait_printed -=

1if wait_printed==0:

level =

wait_printed = next_level

next_level =

0return res

劍指Offer面試題 21 從上到下列印二叉樹

題目 從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。例如輸入下圖中的二叉樹,則依次列印出8 6 10 5 7 9 11。二叉樹節點的定義如下,採用c 語言描述 public class binarytreenode public binarytreenode leftchild...

劍指offer 面試題32 從上到下列印二叉樹

不分行從上到下列印二叉樹 從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。class binarytreenode 使用佇列來完成,列印的同時也在往裡面加入。public void fun binarytreenode root queue queue newlinkedlist...

劍指Offer系列32 2 從上到下列印二叉樹2

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其層次遍歷結果 3 9,20 15,7 python definition for a binary tree node.class ...