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

2021-10-03 23:25:59 字數 751 閱讀 5101

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

棧的思想,安排兩個棧,s1壓入奇數行,s2壓入偶數行,利用count來計算當前是在奇數行是偶數行,若是奇數行,則s1棧頂彈出,s2先壓入棧頂的右,再壓入棧頂的左,直至s1為空;若是偶數行則相反,s2棧頂彈出,先壓左再壓右。完成之後count++,記得需要判斷res_p是否為空,若為空則說明已經到底

佇列的思想,按照層序遍歷的思路,若為偶數層則反向輸出,奇數層則正向輸出

方法一:

class solution 

if(current->left)

}if(res_p.size()>0)

count++;

}else

if(current->right)

}if(res_p.size()>0)

count++;}}

return res;

}};

方法二:

class solution 

if(current->right)

number--;

}if(count%2 == 0 && res_p.size()>0)

else if(count%2 == 1 && res_p.size()>0)

count++;

}return res;

}};

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

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

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

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

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

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