es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recorriendo un árbol binario utilizando un tipo de retorno vectorial.

Estoy tratando de recorrer un AVLtree con un par de valores clave y devolver un vector con todos los valores.

Cuando uso una instrucción cout, puedo comprobar que la función está recorriendo correctamente el árbol y devolverá todos los valores en el árbol. Sin embargo, cuando intento añadir esto a un vector y usarlo en otra parte de mi programa, solo se ha almacenado el nodo raíz.

“`cpp
vector treeTraversal(){
return treeTraversal(root);
}

vector treeTraversal(AVLNode<int, string=””> *node ){
vector temp;

if(node != nullptr){
    treeTraversal(node->left);
    treeTraversal(node->right);
    temp.push_back(node->vectorToBe);
}

return temp;

}

Estoy intentando almacenar todos los valores devueltos en un vector para poder acceder a ellos en una parte posterior de mi programa.</int,>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    En el código proporcionado, el problema es que la función traversal no combina correctamente los resultados de los subárboles izquierdo y derecho. Una solución sencilla es utilizar otro vector para almacenar los resultados de los subárboles izquierdo y derecho, y luego concatenar eso con el valor del nodo actual:

    “`c++
    vector treeTraversal() {
    return treeTraversal(root);
    }

    vector treeTraversal(AVLNode<t, s=””>* node) {
    vector
    temp;

    if (node != nullptr) {
        // Recorrer el subárbol izquierdo
        vector<s> left = treeTraversal(node->left);
        temp.insert(temp.end(), left.begin(), left.end());
    
        // Agregar el valor del nodo actual
        temp.push_back(node->vectorToBe);
    
        // Recorrer el subárbol derecho
        vector<s> right = treeTraversal(node->right);
        temp.insert(temp.end(), right.begin(), right.end());
    }
    
    return temp;
    

    }
    “`

    Con esta modificación, el vector temp contendrá correctamente todos los valores del árbol según se desea.</t,>

Comments are closed.