標籤:public ack odi bsp http pre ref sub www
題目:把二叉樹列印成多行
要求:從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
/*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) { } };
解題代碼:
1 class Solution { 2 public: 3 vector<vector<int> > Print(TreeNode* pRoot) { 4 vector<vector<int> > res; 5 vector<int> subRes; 6 if(pRoot == nullptr) 7 return res; 8 9 int currentLevel = 1;10 int nextLevel = 0;11 queue<TreeNode*> q;12 q.push(pRoot);13 14 while(!q.empty()){15 TreeNode* temp = q.front();16 subRes.push_back(temp->val);17 q.pop();18 19 if(temp->left){20 q.push(temp->left);21 nextLevel++;22 }23 if(temp->right){24 q.push(temp->right);25 nextLevel++;26 }27 currentLevel--;28 if(currentLevel == 0){29 res.push_back(subRes);30 subRes.clear();31 currentLevel = nextLevel;32 nextLevel = 0;33 }34 }35 return res;36 }37 };
劍指offer---把二叉樹列印成多行