II:
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
1 class Solution { 2 public: 3 vector<vector<int> > levelOrderBottom(TreeNode* root) { 4 vector<vector<int> >ret; 5 ret.clear(); 6 if(root==NULL) 7 return ret; 8 queue<TreeNode*> Q; 9 Q.push(root); 10 Q.push(NULL); 11 vector<int> tmp; 12 while(!Q.empty()) 13 { 14 TreeNode *p=Q.front(); 15 Q.pop(); 16 if(p!=NULL) 17 { 18 tmp.push_back(p->val); 19 if(p->left) 20 Q.push(p->left); 21 if(p->right) 22 Q.push(p->right); 23 }else{ 24 if(!tmp.empty()) 25 { 26 S.push(NULL); 27 ret.push_back(tmp); 28 tmp.clear(); 29 } 30 } 31 } 32 reverse(ret.begin(),ret.end()); 33 return ret; 34 } 35 };
I:
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
1 class Solution { 2 public: 3 vector<vector<int> > levelOrder(TreeNode* root) { 4 5 queue<TreeNode *>Q; 6 vector<vector<int> > ret; 7 ret.clear(); 8 vector<int> tmp; 9 Q.push(root); 10 Q.push(NULL); 11 TreeNode * node; 12 13 14 while(!Q.empty()) 15 { 16 node=Q.front(); 17 18 Q.pop(); 19 if(node!=NULL) 20 { 21 tmp.push_back(node->val); 22 if(node->left) 23 Q.push(node->left); 24 if(node->right) 25 Q.push(node->right); 26 }else{ 27 if(!tmp.empty()) 28 { 29 Q.push(NULL); 30 ret.push_back(tmp); 31 tmp.clear(); 32 } 33 } 34 35 } 36 37 return ret; 38 } 39 };