BT Level Order

普通level order一个队列,区分强推编程之美vector模拟队列解法,于是再次联系了这个漂亮的算法。
另外学校到reverse其实里面可以是一个别的类型,未必是基本数据类型 ,总之是把外部容器里的元素逆置,只要原始都是一样类型就可以了,vector也肯定都是装一种东西的。

class Solution {
public:
    vector<vector<int> > levelOrderBottom(TreeNode *root) {
        vector<TreeNode* > vec;
        vector<vector<int> > alllevel;
        vector<int> level;

        if(root==NULL)
            return alllevel;

        vec.push_back(root);
        level.push_back(root->val);
        alllevel.push_back(level);

        int cur=0,last;
        while(cur<vec.size())
        {
            last=vec.size();
            level.clear();
            while(cur<last)
            {
                if(vec[cur]->left!=NULL)
                    vec.push_back(vec[cur]->left), level.push_back(vec[cur]->left->val);
                if(vec[cur]->right!=NULL)
                    vec.push_back(vec[cur]->right), level.push_back(vec[cur]->right->val);

                cur++;
            }
            if(level.size()>0)
                alllevel.push_back(level);
            //cout<<endl;
        }
        reverse(alllevel.begin(),alllevel.end());
        return alllevel;
    }
};

Posted by richard爱闹 - 7月 24 2014
如需转载,请注明: 本文来自 Richard