Originariamente inviato da vfldj
Mii che scema!! Ops
Solitamente ritorno -1 perchè così mi salta all'occhio che è un albero "particolare", comunque si se facessi una cosa più seria restituirei un'eccezione ma ora si tratta di semplici esercizi per allenarsi

Ok allora metto BinaryNode privata, grazie per il consiglio..
I generici non so cosa siano..
Hai presente quando in una struttura dati specifichi il tipo, ad esempio ArrayList<String> invece di ArrayList?
http://docs.oracle.com/javase/tutori...ics/index.html
Originariamente inviato da vfldj
Ho risolto in questo modo:
codice:
public int contaNodiConFiglioSinistroMultipli(int x) {
int cont = 0;
if (left != null && right == null) {
if (left.dato % x == 0)
cont = cont + left.contaNodiConFiglioSinistroMultipli(x) + 1;
else
cont = cont + left.contaNodiConFiglioSinistroMultipli(x);
}
if (left == null && right != null)
cont = cont + right.contaNodiConFiglioSinistroMultipli(x);
if (left != null && right != null) {
if (left.dato % x == 0)
cont = cont + left.contaNodiConFiglioSinistroMultipli(x) + right.contaNodiConFiglioSinistroMultipli(x) + 1;
else
cont = cont + left.contaNodiConFiglioSinistroMultipli(x) + right.contaNodiConFiglioSinistroMultipli(x);
}
return cont;
}
Grazie ancora!!
Io avrei fatto più una cosa del genere per semplificarlo, ma non ho un albero su cui provarlo, magari ho dimenticato qualche caso particolare:
codice:
int contaFigliSinistriMultipliDi(int value)
{
return isEmpty() ? 0 : contaFigliSinistriMultipliDi(root, false);
}
codice:
private int contaFigliSinistriMultipliDi(int value, boolean isLeftChild)
{
int counter = 0;
if (isLeftChild && (key == 0 || key % 3 == 0))
++counter;
if (leftChild != null)
counter += contaFigliSinistriMultipliDi(leftChild, true);
if (rightChild != null)
counter += contaFigliSinistriMultipliDi(rightChild, false);
return counter;
}