Hola, para ver un ejemplo de árbol binario puedes guiarte por este ejemplo:
https://www.aprenderaprogramar.com/foros/index.php?topic=1367.msg7474#msg7474Para operar con este tipo de árboles necesitas usar y comprender el concepto de recursividad:
www.aprenderaprogramar.com/foros/index.php?topic=1493Tienes que definir un método para "eliminar elementos repetidos" pero te recomiendo que antes de programarlo directamente hagas pasos preliminares para ir más seguro.
Te aconsejo que empieces por crear un método que permita comparar un árbol con otro árbol y que muestre por pantalla cuáles son los elementos repetidos.
Tienes que pensar cómo hacerlo. En esto influiría bastante si se tratara de árboles ordenados o no, pero para resolverlo para el caso más general voy a suponer que se trata de árboles no ordenados.
Habría que pensar cómo hacerlo. Se me están ocurriendo dos opciones.
El método supongamos que tiene la signatura siguiente:
public void detectarElementosDuplicados (Arbol elArbolQueQueremosComparar) {
}
Podríamos plantearlo de varias maneras:
a) Recorrer el árbol que representa la clase y meter los valores que almacenan sus nodos en un array (array1). Luego recorrer el árbol que se recibe por parámetro y meter los valores que almacenan sus nodos en un array (array2). Luego comparar ambos arrays para ver cuáles son los valores duplicados, que podemos meter en otro array de elementosDuplicados. Finalmente, recorrer el árbol original y cuando se compruebe que el valor en un nodo coincide con un valor en elementosDuplicados, mostrar el mensaje por pantalla.
Nota: la comparación de dos arrays para encontrar valores duplicados la haríamos así
int k=0;
for(int i = 0; i < array1.length; i++)
{
for(int j = 0; j < array2.length; j++)
{
if(array1[i] == array2[j])
{
elementosDuplicados[k]= array1[i]; //AÑADIR el elemento al array de duplicados
k=k+1;
}
}
}
Con esto habría que recorrer dos árboles, y luego comparar sus valores
b) Quizás resulte más interesante hacerlo de otra manera como esta: recorremos los valores contenidos en el árbol que recibimos por parámetro y los almacenamos en un array denominado array2.
Ahora comienzas el recorrido del árbol y para cada valor en ese árbol compruebas si existe en el array2. En caso de que exista, muestras un mensaje por pantalla, y en caso de que no exista, continúas el recorrido.
Intenta plantearlo y pega el código que vayas creando para tratar de ayudarte.
Saludos