刷題之二叉樹之字形變換

2022-06-28 22:48:18 字數 720 閱讀 3908

題目描述:給定乙個二叉樹,返回該二叉樹的之字形層序遍歷,(第一層從左向右,下一層從右向左,一直這樣交替)。

例如:給定的二叉樹是,

該二叉樹之字形層序遍歷的結果是

[

[3],

[20,9],

[15,7]

]

解題思路:二叉樹的層序遍歷要用佇列,二叉樹的前中後序遍歷要用堆疊,當然也可以用遞迴。

回歸本題,因為是要求一層從左到右一層從右到左,所以和標準的層序遍歷還要多一層之字變化的要求。

這裡如果在二叉樹結點一層一層放到vectorans 裡是不好區分左右的話,可以在vector>res反轉某一層(即ans)的順序。

c++**如下:

/*

* * struct treenode ; */

class

solution

res.push_back(ans);

}for (int i = 0; i < res.size(); i++)

if (i & 1 != 0

) reverse(res[i].begin(), res[i].end());

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 的大體框架應該是基於從上到下列印二叉樹 其次逐層列印二叉樹,實際上就是讓我們對每一層設定標誌位,然後根據標誌位去決定列印的情況...