LeetCode 103 二叉树的锯齿形层序遍历
程序员文章站
2022-03-03 11:20:42
...
LeetCode 103 二叉树的锯齿形层序遍历
给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回锯齿形层序遍历如下:
[
[3],
[20,9],
[15,7]
]
简单 BFS,在层序遍历的基础上加一个层号即可,若为偶数则把该层遍历得到的值翻转即可。注意当树为空时,返回也应该是个空数组,AC代码如下:
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<vector<int>>ans;
int id=1;
queue<TreeNode*>q;
q.push(root);
while(!q.empty()){
int siz=q.size();
vector<int>v;
while(siz--){
TreeNode* a=q.front();
q.pop();
if(a){
v.push_back(a->val);
if(a->left) q.push(a->left);
if(a->right) q.push(a->right);
}
}
if(v.size()){
if(id%2) ans.push_back(v);
else reverse(v.begin(),v.end()),ans.push_back(v);
}
id++;
}
return ans;
}
};
上一篇: 七巧板的四色问题