從上到下按層列印二叉樹,同一層的節點按照從左到右
的順序列印,每一層列印到第一行,例如本題中上乙個問題的二叉樹
輸出形式會是:
86 10
5 7 9 11
這道題和前面一道題十分類似,也可以用乙個佇列來儲存要列印的節點。
為了把二叉樹的每一行單獨列印到一行裡,我們需要兩個變數:
乙個變數表示當前層中還沒有列印的節點數;另乙個變數表示下一層節點數。
class
treenode
:def
__init__
(self, x)
: self.val = x
self.left =
none
self.right =
none
class
solution
:def
print
(self, root):if
not root:
return
none
queue =
[root]
tobeprinted =
1# 表示當前層中還沒有列印的節點數
nextlevel =
0# 表示下一層的節點數
while
len(queue)
>0:
currentroot = queue.pop(0)
# 按空格隔開,不換行輸出
print
(currentroot.val, end=
" ")
if currentroot.left:
nextlevel +=
1if currentroot.right:
nextlevel +=
1 tobeprinted -=
1# 如果當前層未列印的節點數為0,就跳轉到下一層
if tobeprinted ==0:
# 如果下一層沒有東西了,就不再執行程式了
if nextlevel ==0:
break
print
("\n"
) tobeprinted = nextlevel
nextlevel =
0pnode1 = treenode(8)
pnode2 = treenode(6)
pnode3 = treenode(10)
pnode4 = treenode(5)
pnode5 = treenode(7)
pnode6 = treenode(9)
pnode7 = treenode(11)
pnode1.left = pnode2
pnode1.right = pnode3
pnode2.left = pnode4
pnode2.right = pnode5
pnode3.left = pnode6
pnode3.right = pnode7
s = solution(
)s.print(pnode1)
劍指offer32 1 不分行從上往下列印二叉樹
從上往下列印出二叉樹的每個結點,同一層的結點按照從左到右的順序列印。樣例 輸入如下圖所示二叉樹 8,12,2,null,null,6,null,4,null,null,null 8 12 2 6 4輸出 8,12,2,6,4 思路 用乙個佇列存放樹節點,層次遍歷訪問所有結點,並且儲存其數值。acwi...
劍指offer 矩形覆蓋 python
我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?假設是乙個2 8的大矩形有f 8 種放的方法,當第乙個豎著放,那後面就有f 7 種放的方法 當第乙份橫著放,而下面那個空間也必須橫著放,剩下的就有f 6 種放的方法,那就總...
python 醜數 劍指offer
把只包含質因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含質因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。思路 最直接的暴力解法是從1開始依次判斷數字是否為醜數,直到達到要求的醜數個數。當然這種方法肯定是會tle的,所以我們分析...