题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路:在原来的广搜基础上,按照每层的节点数量(即q.size())进行分组操作,一批一批来。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int> > ans;
if(pRoot == NULL) return ans;
queue<TreeNode*> q;
q.push(pRoot);
while(!q.empty())
{
int len = q.size();
vector<int> v;
while(len--)
{
TreeNode* head=q.front();//用来存队头
q.pop();