剑指offer------把二叉树打印成多行

网友投稿 627 2022-08-24

剑指offer------把二叉树打印成多行

剑指offer------把二叉树打印成多行

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: vector > Print(TreeNode* proot) { vector>out; if(pRoot==NULL) return out; //用队列存储,pair中int表示二叉树的层数,从0层开始 queue>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()); //在相应的层后面添加元素 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; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:剑指offer--整数中1出现的次数(从1到n整数中1出现的次数)
下一篇:硬币题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~