1. 程式人生 > >劍指Offer——把二叉樹打印成多行

劍指Offer——把二叉樹打印成多行

blog queue 隊列 int 利用 vector ont str logs

題目描述:

從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。


分析:

二叉樹的層次遍歷,利用隊列。


代碼:

 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 };

劍指Offer——把二叉樹打印成多行