按之字形順序列印二叉樹

2021-09-29 14:42:27 字數 930 閱讀 2959

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

關鍵在於層序遍歷的變換

我們知道層序遍歷就是從上到下,從左到右,一層一層的遍歷,層序遍歷演算法如下:

1、判斷根節點不為空,push進佇列中

2、判斷隊列為空,結束,不為空進入3

3、pop佇列中首元素,將首元素中左右子樹不為空的節點加入佇列中,重複2,3

而採取之字型列印關鍵在於,

1、一次迴圈,遍歷整層元素

2、儲存下一層需要遍歷的元素

實現如下:

#pragma once

#include using namespace std;

namespace this_two_tree

}; class solution

ret.push_back(layer);

vectortmp;

for (int i = size - 1; i >= 0; i--)

if (que[i]->left != nullptr)

}else

if (que[i]->right != nullptr)}}

left = !left;

que.clear();

que.insert(que.begin(), tmp.begin(), tmp.end());

}return ret;

} };

}

test.cpp

#pragma once

#include "this_two_tree.h"

using namespace this_two_tree;

void start_test()

按之字形順序列印二叉樹

題目描述 按之字形順序列印二叉樹 請實現乙個函式按照之字形列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右至左的順序列印,第三行按照從左到右的順序列印,其他行以此類推。解析 要分層列印,不能用常規方法,訪問乙個節點後,將該節點的左右子節點壓入佇列。奇數層從左到右列印,偶數層從右向左列印。使...

按之字形順序列印二叉樹

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

按之字形順序列印二叉樹

其實我們可以借鑑層次遍歷時候的思路,參見劍指offer 060 把二叉樹列印成多行,我們把層次遍歷的結果儲存在vector vector 中每一層儲存在乙個vector中,那麼我們輸出的時候就可以進行調整,按照之字形輸出即可 for int i 0 i if i 1 return ans 完整 如下...