Leetcode/Top Interview 150
[Binary Tree BFS][Medium] 103. Binary Tree Zigzag Level Order Traversal
자전거통학
2024. 6. 14. 22:27
주어진 Binary Tree에 대해 각 level당 value값을 zig zag로 수집하고, 결과를 출력하라.
Solution.
level의 노드를 문제의 의도대로 교차 접근한다.
Easy 난이도에 더 가까운 문제.
코드
더보기
vector<vector<int>> zigzagLevelOrder(TreeNode* root)
{
vector<vector<int>> vRet;
if(root == nullptr)
return vRet;
queue<TreeNode*> qBuff;
qBuff.push(root);
bool dirLeftToRight = true;
while(qBuff.size() > 0)
{
int cnt = qBuff.size();
vector<TreeNode*> vLevelNodes;
for(int q = 0; q < cnt; ++q)
{
TreeNode* cur = qBuff.front();
qBuff.pop();
vLevelNodes.push_back( cur );
if(cur->left != nullptr) qBuff.push(cur->left);
if(cur->right != nullptr) qBuff.push(cur->right);
}
vector<int> vLevel;
for(int q = 0; q < vLevelNodes.size(); ++q)
{
int idx = dirLeftToRight ? q : vLevelNodes.size()-q-1;
vLevel.push_back( vLevelNodes[idx]->val );
}
vRet.push_back(vLevel);
dirLeftToRight = !dirLeftToRight;
}
return vRet;
}
결과