/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int getHeight(TreeNode* root){
if(root == NULL){
return 0;
}
return max(getHeight(root->left), getHeight(root->right)) + 1;
}
void clearQueue(queue<TreeNode*>& q){
queue<TreeNode*> tmp;
q.swap(tmp);
}
vector<vector<int> > levelOrderBottom(TreeNode *root) {
vector<vector<int> >ret;
int height = getHeight(root);
if(height == 0){
return ret;
}
ret.resize(height);
queue<TreeNode*> q[2];
int t = 0;
int tmph = height - 1;
q[t].push(root);
while(!q[t].empty()){
//q[1-t].clear();
clearQueue(q[1-t]);
while(!q[t].empty()){
TreeNode* tmp = q[t].front();
q[t].pop();
ret[tmph].push_back(tmp->val);
if(tmp->left != NULL){
q[1-t].push(tmp->left);
}
if(tmp->right != NULL){
q[1-t].push(tmp->right);
}
}
t = 1 - t;
tmph--;
}
return ret;
}
};
leetcode Binary Tree Level Order Traversal
最新推荐文章于 2024-02-12 01:19:39 发布