按之字形順序列印二叉樹

2021-08-26 09:42:00 字數 527 閱讀 2594

題目:

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

思路:

和層序遍歷不一樣的是如果上一層是從左向右列印,這一層是從右向左列印。定義乙個bool變數,利用vector的逆序,每次將bool變數變為相反的即可。

層序遍歷是借助佇列實現的,先將根結點入棧,判斷條件為佇列非空,將佇列中的隊頭元素記錄下來,並刪除結點,如果該隊頭結點有左子樹,將左子樹根結點入隊,有右子樹,將右子樹根結點入隊。最後將這一層的結點都如陣列中。

/*

struct treenode

};*/

class solution

if(flag == true)

reverse(v.begin(), v.end());

res.push_back(v);

flag = !flag;

}return res;

}};

按之字形順序列印二叉樹

題目描述 按之字形順序列印二叉樹 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。解析 要分層列印,不能用常規方法,訪問乙個節點後,將該節點的左右子節點壓入佇列。奇數層從左到右列印,偶數層從右向左列印。使...

按之字形順序列印二叉樹

請實現乙個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。include iostream include stack using namespace std struct treenode void pri...

按之字形順序列印二叉樹

其實我們可以借鑑層次遍歷時候的思路,參見劍指offer 060 把二叉樹列印成多行,我們把層次遍歷的結果儲存在vector vector 中每一層儲存在乙個vector中,那麼我們輸出的時候就可以進行調整,按照之字形輸出即可 for int i 0 i if i 1 return ans 完整 如下...