/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<vector<int> > zigzagLevelOrder(TreeNode *root) {
vector<vector<int> > ret;
if(0==root) return ret;
int nextLevelNodeNum=1;
queue<TreeNode *> q;
q.push(root);
TreeNode *pNode=0;
bool isLToR=true;
while(!q.empty())
{
int levelNodeNum=nextLevelNodeNum;
nextLevelNodeNum=0;
vector<int> levelNode;
for(int i=0;i<levelNodeNum;i++)
{
pNode=q.front();
q.pop();
levelNode.push_back(pNode->val);
if(pNode->left)
{
nextLevelNodeNum++;
q.push(pNode->left);
}
if(pNode->right)
{
nextLevelNodeNum++;
q.push(pNode->right);
}
}
if(isLToR)
{
ret.push_back(levelNode);
isLToR=false;
}
else
{
reverse(levelNode.begin(),levelNode.end());
ret.push_back(levelNode);
isLToR=true;
}
}
return ret;
}
};
Binary Tree Zigzag Level Order Traversal
最新推荐文章于 2021-02-05 11:10:39 发布