請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。
思路:用兩個棧,奇數層從左到右,入棧1,先左子結點後右子結點,偶數層從右到左,入棧2,先右子結點再左子結點。很容易能寫出**,下面寫的我的**冗餘性比較高,可以優化,不過我懶得優化了,因為也少不了幾行。不過在這兒提另乙個高階的想法,我覺得挺好的,就是用雙向佇列,不過雙向佇列我沒有用過,不熟,就沒有寫**,在這兒貼乙個別人的介紹雙向佇列的部落格,需要的自取。
**:/*struct treenode
};*/
class solution
if(!tem.empty())
while(!s.empty())
if(!tem.empty())
}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 完整 如下...