二叉樹之字形遍歷

2022-06-16 11:18:11 字數 923 閱讀 3130

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

例如:給定的二叉樹是,

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

[3],

[20,9],

[15,7]

**實現

​ 通過使用兩個棧來實現之字形遍歷,第乙個棧儲存從左到右的遍歷的層,第二個棧儲存從右到左遍歷的層。其中第乙個棧出棧的元素,再將其直系子節點儲存棧中時,先存左孩子再存右孩子,這樣它們的孩子那一層的元素出棧的時候就是從右到左了;第二個棧中的元素出棧的時候,儲存它們的孩子節點的時候,先存右孩子,再存左孩子,這樣就保證了它們的孩子層的元素出棧的時候是從左往右了。

​ 這兩個棧中每次只儲存一層的元素,將一層的元素全部出棧完畢之後,才會對下一層的元素進行出棧,這就保證能讓同一層的元素儲存到乙個列表中了。

public arraylist> zigzaglevelorder (treenode root) 

stackfirst = new stack<>(); //從左往右

stacksecond = new stack<>(); //從右往左

first.push(root);

int i = 1;

while (!first.isempty() || !second.isempty())

if (node.right != null)

}}else

if (node.left != null)}}

i++;

reslist.add(level);

}return reslist;

}

之字形列印二叉樹

請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。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 的大體框架應該是基於從上到下列印二叉樹 其次逐層列印二叉樹,實際上就是讓我們對每一層設定標誌位,然後根據標誌位去決定列印的情況...