按之字形顺序打印二叉树
OJ地址:按之字形顺序打印二叉树
题目描述:给定一颗二叉树,假设根节点为第一层,按照奇数层,从左到右打印,偶数层,从右到左打印。
【方法】层次遍历打印二叉树,用队列实现。
vector<vector<int> > Print(TreeNode* root) {
vector<vector<int>> res;
if(root == nullptr)
return res;
queue<TreeNode*> q;
q.push(root);
int size = 0;
int level = 1;
while(!q.empty())
{
size = q.size();
vector<int> path;
while(size--)
{
TreeNode *node = q.front();
path.push_back(node->val);
q.pop();
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
if(level % 2 == 0) //如果是偶数层,就将其反转
{
reverse(path.begin(), path.end());
}
level ++;
res.push_back(path);
}
return res;
}