题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
层次打印二叉树
vector<int> PrintFromTopToBottom(TreeNode* root)
{
queue<TreeNode*> q;
vector<int> v;
if(root==nullptr)return v;
q.push(root);
while(!q.empty())
{
root = q.front(); //记录队头
if(root->left)q.push(root->left);//如果有子节点则,入队
if(root->right)q.push(root->right);
v.push_back(root->val);//队头的值打印
q.pop();
}
return v;
}
分行层次打印
vector<vector<int>> Print(TreeNode* root)
{
queue<TreeNode*> q;
vector<vector<int> > V;
if(root==nullptr)return V;
q.push(root);
while(!q.empty())
{
vector<int> tmp;//存一行的节点
int n = q.size();
while(n--)
{
root = q.front();
tmp.push_back(root->val);
if(root->left)q.push(root->left);
if(root->right)q.push(root->right);
q.pop();
}
V.push_back(tmp);
}
return V;
}