要做 z 字形便利
就是 BFS,但要設定一格 flag 去判斷是否要顛倒
class Solution {
public:
vector<vector<int>> zigzagLevelOrder(TreeNode* root) {
vector<vector<int>> ans;
if(!root) return ans;
queue<TreeNode*> q;
q.push(root);
bool flag = true;
while(!q.empty()){
int n = q.size();
vector<int> v;
for(int i=0;i<n;i++){
TreeNode* node = q.front();
q.pop();
v.push_back(node->val);
if(node->left)q.push(node->left);
if(node->right)q.push(node->right);
}
if(!flag) reverse(v.begin(), v.end());
ans.push_back(v);
flag = !flag;
}
return ans;
}
};