题解 | #JZ78 把二叉树打印成多行#
把二叉树打印成多行
http://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288
//使用两层队列按左右子节点数据遍历
/*
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>> retvec;
queue<TreeNode*> cur, next;
if (pRoot) cur.push(pRoot); //当前层压入根节点
while (cur.size()) {
vector<int> vec;
while (cur.size()) { //遍历当前层节点,存储值,左右节点存入下一层
TreeNode *node = cur.front();
cur.pop();
vec.push_back(node->val);
if (node->left) next.push(node->left);
if (node->right) next.push(node->right);
}
if (vec.size()) retvec.push_back(vec);
cur.swap(next); //当前层为空,与下一层交换
}
return retvec;
}
};