題目描述:從上到下按層列印二叉樹,同層結點按從左向右的順序列印,每一層列印到一行。
例如
8
6 10
5 7 9 11
類似於按層遍歷二叉樹,利用廣度優先遍歷的思想,選擇stl的佇列。
step1;把起始節點放到佇列當中。
step2:每一次從佇列頭部取出乙個結點,遍歷過這個節點後,把它能到達的其他節點(對樹而言,是子結點)都依次放入佇列。
重複以上過程,直到隊列為空。
分層的話,需要引入兩個變數,乙個記錄本行還有幾個結點沒有列印,另乙個記錄下一行需要列印的結點個數。
void printree(binarytreenode* proot)
if(pnode->m_nright!=null)
nodes.pop();
--tobeprint;
if(tobeprint==0)
}}
劍指offer 把二叉樹列印成多行
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路就是借助兩個輔助單向佇列queue來實現,暫且叫他們help1和help2。先把根節點壓入help1,然後依次取出help1裡面的元素,將其值放入儲存結果的vector中,並將其左右節點壓入help2,直至help1為空。此時hel...
劍指offer 把二叉樹列印成多行
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。用佇列來實現按行列印,但是由於要分層列印,需要區分每一行,所以要用乙個tmp來記錄每層列印出的結果 coding utf 8 class treenode def init self,x self.val x self.left non...
劍指offer 把二叉樹列印成多行
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。思路 對比從上到下列印二叉樹 以及上乙個題目 按之字形順序列印二叉樹 不管是廣度優先遍歷有向圖還是一棵樹,都需要用到佇列。首先將根節點放入佇列,接下來每次從佇列頭部取出乙個節點,遍歷這個節點之後把它能到達的子節點都依次放入佇列。重複這個...