題目思路:從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行。
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 ...