Ejercicio árbol binario

Estoy estudiando para un examen y no soy capaz de hacer este ejercicio. A ver si me puedes dar alguna ayuda. Gracias
Implementar un método arbolSuma que reciba como parámetro de entrada un árbol
binario de números enteros y devuelva otro árbol binario de números enteros en el que
cada uno de sus nodos contenga la suma de él mismo junto con todos sus nodos
descendientes.

1 Respuesta

Respuesta
1
Para la solución necesitas 2 clases la clase NodoArbolBinario y ArbolBinario y en la clase ArbolBinario se encuentra los métodos arbolSuma uno publico y otro privado, el que debes llamar desde la clase donde esta el main es el publico es decir el que recibe el ArbolBinario por parámetro, estas son:
//************************************
// clase NodoArbolBinario
//************************************
public class NodoArbolBinario {
private int info = 0;
private NodoArbolBinario derecho = null;
private NodoArbolBinario izquierdo = null;
public NodoArbolBinario ( int x ) {
this.info = x;
this.derecho = null;
this.izquierdo = null;
}
public NodoArbolBinario getDerecho(){
return this.derecho;
}
public void setDerecho(NodoArbolBinario derecho){
this.derecho = derecho;
}
public int getInfo(){
return this.info;
}
public void setInfo(int info){
this.info = info;
}
public NodoArbolBinario getIzquierdo(){
return this.izquierdo;
}
public void setIzquierdo(NodoArbolBinario izquierdo){
this.izquierdo = izquierdo;
}
}
//************************************
// clase ArbolBinario
//************************************
public class ArbolBinario {
private NodoArbolBinario raiz = null;
private NodoArbolBinario padre = null;
private boolean centinela = false, sw = false;
public ArbolBinario () {
}
public NodoArbolBinario adicionar( int x ) {
NodoArbolBinario p = new NodoArbolBinario ( x ), r = null;
if ( this.raiz == null ) {
this.raiz = p;
}
else {
NodoArbolBinario q = raiz;
while ( q != null ) {
r = q;
if ( x >= q.getInfo() ) {
q = q.getDerecho();
}
else {
q = q.getIzquierdo();
}
}
}
if ( x >= r.getInfo() ) {
r.setDerecho( p );
}
else {
r.setIzquierdo( p );
}
return p;
}
public ArbolBinario arbolSuma(ArbolBinario tree){
ArbolBinario res = new ArbolBinario();
arbolSuma(res,tree.raiz);
return res;
}
private int arbolSuma(ArbolBinario res, NodoArbolBinario p){
if ( p == null ){
return 0;
}
else {
int sum = p.getInfo();
NodoArbolBinario aux = res.adicionar(sum);
sum += arbolSuma(res, p.getIzquierdo() );
sum += arbolSuma(res, p.getDerecho() );
aux.setInfo(sum);
return sum;
}
}
}
Espero que te sirva, y no olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas