zerofly's Blog

努力不一定成功,但不努力一定不会成功

0%

把二叉树打印成多行


题目描述

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

解题思路

这是二叉树的层序遍历,直接使用构造队列(queue),来实现每层打印。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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> > result;
if (pRoot == NULL)
return result;

queue<TreeNode*> Q;
Q.push(pRoot);
while (!Q.empty())
{
vector<int> temp;
int num = Q.size();
for (int i = 0; i < num; i++)
{
TreeNode* front = Q.front();
if (front->left != NULL)
Q.push(front->left);
if (front->right != NULL)
Q.push(front->right);
temp.push_back(front->val);
Q.pop();
}
if (!temp.empty())
result.push_back(temp);
}
return result;
}
};

文章作者:zerofly

发布时间:2020年06月07日 - 10:06

原始链接:http://zeroflycui.github.io/55926d8d.html

许可协议: 转载请保留原文链接及作者。