剑指offer60_把二叉树打印成多行_题解
把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
分析
方案一:层序遍历
示例1
输入
{8,6,10,5,7,9,11}
返回值
[[8],[6,10],[5,7,9,11]]
代码
/*
1.时间复杂度:O(n^2)
2.空间复杂度:O(1)
*/
class Solution
{
public:
vector<vector<int>> Print(TreeNode *pRoot)
{
vector<vector<int>> ret;
queue<TreeNode *> q;
if(pRoot)
q.push(pRoot);
while (!q.empty())
{
vector<int> row;
int sz = q.size();
while (sz--)
{
TreeNode *top = q.front();
row.emplace_back(top->val);
q.pop();
if(top->left)
q.push(top->left);
if(top->right)
q.push(top->right);
}
ret.emplace_back(row);
}
return ret;
}
};