• something about basic usage of vector,queue


    1.for a two dimension vector, we must assign at least the first dimension of the vector

    2.each dimension of an inner vector can be different

    3.if you don't want to set a volume for vector<vector<int> > for uncertainness, you can just use a method like append to implement the structure,which is applied inBinary Tree Level Order Traversal,

    4.about queue: to add an element, q.push(element); to get the first element, q.front(); to erase the first element, q.pop();

    5.how to differ elements from different layers?

        use two queues rather than one

    code:

    class Solution{
    public:
        vector<vector<int> > levelOrder(TreeNode*root){
            vector<vector<int> > matrix;
            if(root == NULL){
                return matrix;
            }
            queue<TreeNode*> qNode[2];
            //int row = 0;
            qNode[0].push(root);
            int index = 0;
    		
            while((!qNode[0].empty())||(!qNode[1].empty())){
    			 vector<int>mm;
                switch(index){
            case(0):
                while(!qNode[0].empty()){
                    TreeNode* tmp = qNode[0].front();
                    qNode[0].pop();
                  
    				mm.push_back(tmp->val);
                    if(tmp->left != NULL){
                        qNode[1].push(tmp->left);
                    }
                    if(tmp->right != NULL){
                        qNode[1].push(tmp->right);
                    }
                }
                index = 1 - index;
    			matrix.push_back(mm);
                //++row;
                break;
            case(1):
    			//vector<vector<int> >m;
                while(!qNode[1].empty()){
                    TreeNode* tmp = qNode[1].front();
                    qNode[1].pop();
                    //matrix[row].push_back(tmp->val);
    				mm.push_back(tmp->val);
                    if(tmp->left != NULL){
                        qNode[0].push(tmp->left);
                    }
                    if(tmp->right!=NULL){
                        qNode[0].push(tmp->right);
                    }
                }
                index = 1 - index;
                //++row;
    			matrix.push_back(mm);
                }
            }
             return matrix;
        }
    
    };
    

      

  • 相关阅读:
    文件操作实例加强
    文件操作的一般基础操作
    列表与if语句的结合
    难题记录
    字典,集合,列表混合使用需注意:
    列表的一些难度操作
    字符串知识巩固
    and与or的用法
    AngularJS中的过滤器
    NodeJS中的静态资源管理服务
  • 原文地址:https://www.cnblogs.com/warmfrog/p/3699221.html
Copyright © 2020-2023  润新知