請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。
利用兩個棧(定義乙個兩個棧的陣列),用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...