c 實現 之字形列印二叉樹

2021-10-07 11:14:32 字數 1038 閱讀 8475

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

與之前的列印二叉樹都是特別像,因此是同樣的思路解決,使用bfs借助佇列很方便的可以解決。

首先回顧一下模板:

如果不需要確定當前遍歷到了哪一層,模板如下:

void

bfs();

// or set

queue<

int>

pq(start_val)

;while

(!pq.

empty()

)}// end for

}// end while

}

如果需要確定遍歷到哪一層,模板如下:

void

bfs();

// or set

queue<

int>

pq(original_val)

;while

(!pq.

empty()

)}// end for

}// end inner while

level++;}

// end outer while

}

這道題關鍵思路是奇數層從左往右,偶數層從右往左遍歷;

**如下:

class

solution

queue> help;

help.

push

(proot)

;int level=0;

while

(!help.

empty()

)++level;if(

!(level&1)

) res.

push_back

(ans);}

return res;}}

;

之字形列印二叉樹

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

之字形列印二叉樹

請實現乙個函式按照之字形順序從上向下列印二叉樹。即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。樣例輸入如下圖所示二叉樹 8,12,2,null,null,6,4,null,null,null,null 8 12 2 6 4 輸出 8 2...

之字形列印二叉樹

思路 首先我們需要逐層列印二叉樹,然後根據每一層的狀態判定是從左到右,還是從右到左。首先問題的核心其實是從上到下,從左到右列印二叉樹,只不過後面題目多了兩個要求,所以我們2 的大體框架應該是基於從上到下列印二叉樹 其次逐層列印二叉樹,實際上就是讓我們對每一層設定標誌位,然後根據標誌位去決定列印的情況...