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.

¿Cómo puedo imprimir los datos de un árbol en un método de cadena?

Tengo este método que imprime el contenido del árbol Avl.

public String recorrerEnOrden() {
      return recorrerEnOrden(raiz);
}

private String recorrerEnOrden(NodoAvl<T> nodo) {
  String cadena = "";
    if (nodo != null) {
      if (nodo.izquierdo != null)
        recorrerEnOrden(nodo.izquierdo);
        cadena +=nodo;
      if (nodo.derecho != null)
        recorrerEnOrden(nodo.derecho);
    }
  return cadena;
} 

En este caso aún hay un problema, ya que estás devolviendo un nodo del árbol Avl y necesito todos los nodos del árbol Avl.
No quiero usar algún tipo de método void

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para imprimir todos los nodos en el árbol AVL, podemos modificar el método traverseInOrder() para usar un StringBuilder que almacene todos los nodos en una cadena y luego devuelva la cadena. Aquí hay una implementación de ejemplo:

    public String traverseInOrder() {
        StringBuilder sb = new StringBuilder();
        traverseInOrder(root, sb);
        return sb.toString();
    }
    
    private void traverseInOrder(TNode<t> node, StringBuilder sb) {
        if (node != null) {
            traverseInOrder(node.left, sb);
            sb.append(node).append(" ");
            traverseInOrder(node.right, sb);
        }
    }
    

    Este método modificado utiliza un método auxiliar traverseInOrder(TNode<t> node, StringBuilder sb) de manera recursiva para recorrer el árbol AVL en orden y agregar cada nodo a un StringBuilder. Finalmente, el StringBuilder se convierte en una cadena y se devuelve mediante el método traverseInOrder().

Comments are closed.