¿Cómo se copia el contenido de un árbol de búsqueda binario que tiene emparejamientos K, V?

Sí, tiene que ser recursivo.

Sus clases ya están estructuradas de una manera que hace que esto sea bastante simple de implementar.

EmptyTree es tu caso base. copyTree() en EmptyTree simplemente devuelve la instancia singleton de EmptyTree .

Para NonEmptyTree , solo construye una nueva instancia de NonEmptyTree , con la key y el value copiados de la instancia de destino (“actual”), y los subárboles izquierdo y derecho creados al llamar a copyTree() en los subárboles izquierdo y derecho de la instancia de destino.

Dependiendo de cómo configure su constructor (yo mismo uso clases inmutables, sin getters ni setters), esto sería algo como:

clase pública NonEmptyTree <K extiende Comparable , V> extiende Árbol {
clave K final pública;
valor V final público;
Árbol final público izquierda, derecha;

public NonEmptyTree (K k, V v, Tree l, Tree r) {
clave = k;
valor = v;
izquierda = l;
derecha = r;
}

Árbol público copyOfTree () {
return new NonEmptyTree (clave, valor, left.copyOfTree (), right.copyOfTree ());
}
}

More Interesting

¿Cuáles son los 10 mejores algoritmos del siglo XX?

¿Cuál sería un algoritmo eficiente para ordenar millones de líneas de cadenas / enteros en un archivo?

¿Cuáles son los beneficios del ordenamiento dinámico y sus desventajas en comparación con otros algoritmos de ordenamiento?

Tengo una pila masiva de más de 300 pares de calcetines. ¿Cuál es el algoritmo más rápido que puedo usar para extraer unos 25 pares coincidentes de la pila desordenada?

¿Cuál es un ejemplo de un algoritmo de filtro en la selección de funciones en el aprendizaje automático?

¿Cómo puedo aleatorizar la matriz almacenada y luego usarla como entrada?

¿Cuál es el algoritmo que utilizan los ferrocarriles indios para la confirmación de un boleto de espera? ¿Cuál es la mejor manera de confirmar un boleto cuando hay una gran lista de espera?

¿Cuáles son las aplicaciones de la estructura de datos en C?

¿Cuál es el algoritmo de aprendizaje de Quora para su suministro de noticias?

Cómo modificar Floyd Warshall para resolver Codeforces # 179 Div.1 B Greg y Graph

¿Cuál es el significado de la simulación de recursividad?

¿Cuáles son algunos algoritmos de detección de edad y género que usan OpenCV?

¿Cuáles son los posibles algoritmos utilizados en los juegos de carrera sin fin?

¿Se puede ordenar una lista de números en un número menor de pases que el indicado por la notación Big-O?

¿Dónde puedo encontrar un algoritmo de relevancia marginal máxima en Python para la eliminación de redundancia en dos documentos?