剑指offer------把二叉树打印成多行
Posted wuyi_all_in
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer------把二叉树打印成多行相关的知识,希望对你有一定的参考价值。
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
/*
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>>out;
if(pRoot==NULL)
return out;
//用队列存储,pair中int表示二叉树的层数,从0层开始
queue<pair<TreeNode*,int>>record;
//给队列尾部push一个pair,也可以用make_pair(root,0)
record.push(make_pair(pRoot,0));
while(!record.empty())
//取出队头
TreeNode*node=record.front().first;
int lever=record.front().second;
//弹出对头
record.pop();
//如果lever和out的size大小相等,则说明是一个新层,开辟空间
if(lever==out.size())
out.push_back(vector<int>());
//在相应的层后面添加元素
out[lever].push_back(node->val);
//左孩子不为空,将左孩子放入队列中
if(node->left!=NULL)
record.push(make_pair(node->left,lever+1));
//右孩子不为空,将右孩子放入队列中
if(node->right!=NULL)
record.push(make_pair(node->right,lever+1));
return out;
;
以上是关于剑指offer------把二叉树打印成多行的主要内容,如果未能解决你的问题,请参考以下文章