python:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:return []
res,queue = [],collections.deque()
queue.append(root)
while queue:
tmp = []
for _ in range(len(queue)):
node = queue.popleft()
tmp.append(node.val)
if node.left:queue.append(node.left)
if node.right:queue.append(node.right)
res.append(tmp if len(res)%2==0 else tmp[::-1])
return res
c++:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>>res;
if(root == NULL){
return res;
}
queue<TreeNode*>queue;
queue.push(root);
while(!queue.empty()){
vector<int>tmp;
for(int i = queue.size();i>0;i--){
TreeNode*node = queue.front();
queue.pop();
tmp.push_back(node->val);
if(node->left){
queue.push(node->left);
}
if(node->right){
queue.push(node->right);
}
}
res.push_back(tmp);
}
for(int i = 1;i < res.size(); i += 2){
reverse(res[i].begin(),res[i].end());
}
return res;
}
};