剑指offer 060、把二叉树打印成多行
题目
题解
借助队列,将该层元素从队列中移出,并将下一层元素移入
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
if (!pRoot) return vector<vector<int> >();
vector<vector<int> > result;
queue<TreeNode*> q; // 借助队列
q.push(pRoot);
while (!q.empty()) {
vector<int> temp;
// 将队列中原有元素移出,并将队列中元素的子节点添加进来
for (int i = q.size(); i > 0; --i) {
TreeNode* node = q.front();
temp.push_back(node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
q.pop();
}
// 将该层的元素加入result中
result.push_back(temp);
}
return result;
}
};