劍指Offer 按之字形順序列印二叉樹

2021-08-20 16:30:37 字數 684 閱讀 8830

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

整體思路

看到這個題目的第乙個想法是和按行列印二叉樹很相似,而按行列印二叉樹是利用佇列來實現的;但是這裡要求按之字形,於是考慮用兩個棧來實現。兩個棧分別存放奇數行的節點和偶數行的節點,考慮到奇數行從左到右列印,偶數行從右到左列印;

1)初始的時候棧stack1存放根節點,棧stack2為空;

2)遍歷棧stack1的節點的時候,並按先左節點後又右節點的順序,將棧stack1中節點的子節點加入棧stack2,直至stack1為空

3)遍歷棧stack1的節點的時候,並按先右節點後又左節點的順序,將棧stack2中節點的子節點加入棧stack1,直至stack2為空

重複2)3)直至棧stack1和stack2均為空

**實現

/*

struct treenode

};*/

class solution

if(tmv.size() > 0)

while(!stack2.empty())

if(tmv.size() > 0)

}return res;

}};

3 15 劍指offer 按之字形順序列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。層序遍歷的高階 每行的節點的訪問順序是相反的,我們可以用兩個棧來隔行儲存,乙個棧中根據另乙個棧的棧頂元素的 左結點 右結點 的順序儲存節點,而另乙個棧根據另...

劍指offer 按之字形順序列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。我的解法是用兩個棧來列印,第乙個棧st1列印奇數層,第二個棧st2列印偶數層。先將根節點壓入st1,然後將st1中元素出棧並訪問元素,出棧的同時,將每個節點...

劍指offer 按之字形順序列印二叉樹

題目 劍指offer 按之字形順序列印二叉樹 這個題的本質是返回每一層的節點,關鍵是增加每一層的最右側節點作為標記。如果指標到達這個節點,那麼證明此時佇列裡面的都是下一層的節點。關鍵是為什麼不會有下下層的節點,因為現在訪問到last,最多生成下一層的節點,不會有下下層。所以,此時佇列中最後乙個節點就...