103. 二叉樹的鋸齒形層次遍歷
- 給定一個(gè)二叉樹,返回其節(jié)點(diǎn)值的鋸齒形層次遍歷。(即先從左往右,再從右往左進(jìn)行下一層遍歷,以此類推,層與層之間交替進(jìn)行)。
示例
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回鋸齒形層次遍歷如下:
[
[3],
[20,9],
[15,7]
]
思路
- 利用隊(duì)列實(shí)現(xiàn)層次遍歷,bool變量標(biāo)識(shí)是否需要反轉(zhuǎn)。
- 注意不需要使用兩個(gè)隊(duì)列來標(biāo)記‘層’的信息,每次遍歷時(shí)直接取出該層元素個(gè)數(shù)即可。
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
if (!root) return {};
bool needSwitch = false;
vector<vector<int>> ret;
queue<TreeNode*> mQue;
mQue.push(root);
while (!mQue.empty()) {
int size = mQue.size();
vector<int> level;
while (size--) {
TreeNode* node = mQue.front();
mQue.pop();
level.push_back(node->val);
if (node->left) mQue.push(node->left);
if (node->right) mQue.push(node->right);
}
if (needSwitch) {
ret.push_back(vector<int>(level.rbegin(), level.rend()));
} else {
ret.push_back(level);
}
needSwitch = !needSwitch;
}
return ret;
}
};
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。