zoukankan      html  css  js  c++  java
  • 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;
        }
    
    };
    

      

  • 相关阅读:
    pdf 下载demo
    solr 7.7 搭建和搜索
    java 项目打jar包,用cmd运行,并且编写运行脚本
    excel poi导出demo
    微信小程序支付,带java源码
    ideal中把项目打成war包,并放在tomcat运行,遇见的问题。。。
    ideal中项目resources下txt文件读取不到的问题。
    托管线程池
    线程同步
    使用Fiddler抓取手机上的数据包
  • 原文地址:https://www.cnblogs.com/warmfrog/p/3699221.html
Copyright © 2011-2022 走看看