题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
示例1
输入
{8,6,10,5,7,9,11}
返回值
[[8],[10,6],[5,7,9,11]]
层次遍历用搜索,广搜比较方便。
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>>ans;
if(pRoot==NULL) return ans;
queue<TreeNode*>q;
q.push(pRoot);
int level=0;
while(q.size())
{
int len=q.size();
vector<int>tmp;
while(len--)
{
TreeNode*node=q.front();
q.pop();
tmp.push_back(node->val);
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
level++;
if(level%2==0) reverse(tmp.begin(),tmp.end());
ans.push_back(tmp);
}
return ans;
}
};