劍指offer 之字形列印二叉樹

2021-08-21 16:06:37 字數 746 閱讀 6045

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。

利用兩個棧(定義乙個兩個棧的陣列),用current和next分別指示當前層和下一層,如果當前層是奇數層(current=0),則下一層先入棧左節點再入棧右節點,當前層是偶數層(current=1),則下一層先入棧左節點再入棧右節點,如果儲存當前層的棧為空,說明這一層元素已經全部列印,將temp存入result,temp清空準備儲存下一層,current=1-current,next=1-next,交換儲存用的棧。

補充:vector的刪除操作

clear()函式的作用是清空容器中的內容,但並不**記憶體

temp.clear();
可以通過swap()函式來巧妙的達到**記憶體的效果

temp.swap(vector());
erase()用於清空容器中的內容以及釋放記憶體,並返回指向刪除元素的下乙個元素的迭代器。

temp.erase(temp.begin()+i);

ac**:

class solution 

else //當前層是偶數層,則下一層先入棧左節點再入棧右節點

if(sta[current].empty())}}

return result;

}};

劍指offer 之字形列印二叉樹

請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2,1...

劍指Offer 之字形列印二叉樹 Python

題目要求 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。解題思路 之字形列印 先遍歷後進來的節點的子樹 類似於棧的思想 設定乙個棧用來裝上一層的節點 源節點,根據這乙個棧的節點遍歷它的左右子樹,遍歷完這...

劍指offer之之字形列印二叉樹

題目 請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。前面講述了分行分成列印二叉樹,這裡要之字形。例子 8 4 12 2 6 10 14 1 3 5 7 9 11 13 15列印結果應該是 8 12...