error Leetcode-runtime: unión referencia a puntero nulo de tipo 'struct value_type'

leetcode-102. jerárquica recorrido de árbol binario

Modificar el código de error antes

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {
	vector<vector<int>> res;                
	queue<TreeNode*> LL;        
	queue<TreeNode*> RR;
	
	int lev=0;                
	if(root) LL.push(root);
	
	while(!LL.empty()||!RR.empty()){            
        	if(!LL.empty()){
			while(!LL.empty()){                    
			        TreeNode* tmp=LL.front();                    
			        LL.pop();                    
			        res[lev].push_back(tmp->val);                    
			        if(tmp->left)   RR.push(tmp->left);                    
			        if(tmp->right)  RR.push(tmp->right);                
		        }                
		        lev++;            
		}            
	        else if(!RR.empty()){                
		   	while(!RR.empty()){                    
			        TreeNode* tmp=RR.front();                    
			        RR.pop();                    
			        res[lev].push_back(tmp->val);                    
			        if(tmp->left)   LL.push(tmp->left);                    
			        if(tmp->right)  LL.push(tmp->right);                
		        }                
		        lev++;            
		}
	}        
        return res;
}
};
Pensamiento resolución de problemas: atravesar cada uno con una sola cola, los subárboles inferior izquierdo y derecho a otra cola.
Causa: array irregular utilizando el vector, RES es el tipo vector <vector <>>, donde la capa exterior no está insertado en el vector, la capa interior no se puede utilizar. Vea a continuación:
if(){
	while(){
		```
		res[lev].push_back(tmp->val);
		```
	}
	lev++;
}

Modificado de la siguiente manera: en primer lugar a través de los resultados almacenados en un vector de variables temporales, la última parada. Vea a continuación:
if(){
	vector<int> r;
	while(){
		```
		r.push_back(tmp->val);
		```
	}
	res.push_back(r);
}

CA modificó el código:

/** * Definition for a binary tree node. 
* struct TreeNode { 
* *     int val; 
* *     TreeNode *left; 
* *     TreeNode *right; 
* *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} 
* * }; 
* */
class Solution {
public:    vector<vector<int>> levelOrder(TreeNode* root) {
	vector<vector<int>> res;                
	queue<TreeNode*> LL;        
	queue<TreeNode*> RR;                
	if(root) LL.push(root);
	while(!LL.empty()||!RR.empty()){            
        	if(!LL.empty()){                
        		vector<int> r;                
		        while(!LL.empty()){                    
			        TreeNode* tmp=LL.front();                    
			        LL.pop();                    
			        r.push_back(tmp->val);                    
			        if(tmp->left)   RR.push(tmp->left);                    
			        if(tmp->right)  RR.push(tmp->right);                
		        }                
		        res.push_back(r);            
		}            
	        else if(!RR.empty()){                
		        vector<int> r;                
		        while(!RR.empty()){                    
			        TreeNode* tmp=RR.front();                    
			        RR.pop();                    
			        r.push_back(tmp->val);                    
			        if(tmp->left)   LL.push(tmp->left);                    
			        if(tmp->right)  LL.push(tmp->right);                
		        }                
		        res.push_back(r);            
		}
	}        
        return res;
}
};
Navegar otro blog, mencionado más problemas de verificación (recomendado):

1. Para la entrada vacía [] no se pueden resolver.
error de inicialización array 2.vector, el código fuera de rango.

Liberadas dos artículos originales · ganado elogios 4 · vistas 96

Supongo que te gusta

Origin blog.csdn.net/weixin_41923381/article/details/105009246
Recomendado
Clasificación