利用佇列,從前向後在佇列中取資料時,此時向佇列中插入資料,插在佇列尾部;從後向前在佇列中取資料時,此時若插入資料,插在佇列頭部。感覺這種思路比較容易想到。時間還能接受
0#記錄層數
status =
true
#用於判斷從佇列中讀取資料的順序
while q:
)if status:
for _ in
range
(len
(q))
: node = q.popleft(
)#從前向後在佇列中取資料,則往佇列中插入時,新增在佇列尾部
res[count]
if node.left:
if node.right:
else
:for _ in
range
(len
(q))
: node = q.pop(
)#從後向前在佇列中取資料,則往佇列中插入資料時,新增在佇列頭部
res[count]
if node.right:
q.insert(
0, node.right)
if node.left:
q.insert(
0, node.left)
count +=
1 status =
not status
return res
二叉樹之字形遍歷
給定乙個二叉樹,返回該二叉樹的之字形層序遍歷,第一層從左向右,下一層從右向左,一直這樣交替 例如 給定的二叉樹是,該二叉樹之字形層序遍歷的結果是 3 20,9 15,7 實現 通過使用兩個棧來實現之字形遍歷,第乙個棧儲存從左到右的遍歷的層,第二個棧儲存從右到左遍歷的層。其中第乙個棧出棧的元素,再將其...
二叉搜尋樹的後續遍歷序列 之字形列印二叉樹
解題思路 這道題第一次沒有思路,有了思路之後很簡單 就是,後序遍歷最後乙個元素就是根節點,然後重新遍歷整個序列 這個序列,一旦遇到了大於跟結點的數字,那麼就不可能再遇到小於根節點的數字了,一旦遇到了,就說明這個序列不是合格的二叉搜尋樹的後續遍歷序列 class solution for i i si...
之字形列印二叉樹
請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。include include include binarytree.h using namespace std void bprint binarytre...