按之字形顺序打印二叉树
按之字形顺序打印二叉树
http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0
层次遍历打印二叉树,用队列实现。
vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int>> res; //存放结果 if(pRoot == NULL) return res; queue<TreeNode*> q; q.push(pRoot); int flag = 0; //用于判断是否需要反转存储 while(!q.empty()){ int level_size = q.size(); //每层vector大小 vector<int> path; path.resize(level_size); for(int i = 0; i<level_size;i++){ TreeNode * tmp = q.front(); q.pop(); if(flag == 0){//不反转 path[i] = tmp->val; }else{ //反转 path[level_size-1 - i] = tmp->val; } if(tmp->left) q.push(tmp->left); if(tmp->right) q.push(tmp->right); } res.push_back(path); //每层结束后需要反转 if(flag == 0){flag = 1;} else flag = 0; } return res; }