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.