您的位置:首页 > Web前端

剑指Offer——把二叉树打印成多行

2017-11-03 11:57 260 查看
题目描述:

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

分析:

二叉树的层次遍历,利用队列。

代码:

1 /*
2 struct TreeNode {
3     int val;
4     struct TreeNode *left;
5     struct TreeNode *right;
6     TreeNode(int x) :
7             val(x), left(NULL), right(NULL) {
8     }
9 };
10 */
11 class Solution {
12 public:
13     vector<vector<int> > Print(TreeNode* pRoot) {
14         vector<vector<int> > res;
15         if(pRoot == NULL) return res;
16         queue<TreeNode*> q1, q2;
17         q1.push(pRoot);
18         while(1) {
19             vector<int> v1;
20             while(!q1.empty()) {
21                 TreeNode* top = q1.front();
22                 v1.push_back(top->val);
23                 if(top->left) q2.push(top->left);
24                 if(top->right) q2.push(top->right);
25                 q1.pop();
26             }
27             res.push_back(v1);
28             if(q2.empty()) break;
29             vector<int> v2;
30             while(!q2.empty()) {
31                 TreeNode* top = q2.front();
32                 v2.push_back(top->val);
33                 if(top->left) q1.push(top->left);
34                 if(top->right) q1.push(top->right);
35                 q2.pop();
36             }
37             res.push_back(v2);
38             if(q1.empty()) break;
39         }
40         return res;
41     }
42 };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: