Non hai precisato cosa contiene il tuo albero, quali classi hai usato e quali metodi offrono (la sua API in pratica) ecc.... Insomma .. non hai precisato nulla.Originariamente inviato da melmar20
ciao a tutti, ho una struttura ad albero ennario e ho bisogno di alcune funzioni che calcolino il numero di foglie dell'albero, la profondità e il numero di nodi.
Ho fatto una ricerca ma non ho trovato niente di implementato.
Sapreste dirmi se c'è qualcosa che fa al caso mio e che ancora non sono riuscito a scovare???
Allora ecco un esempio pratico che ho buttato giù al volo:
Il programma stampa 4, che è il numero delle foglie (D E B G).codice:import java.util.*; public class TreeTest { public static void main(String[] args) { TreeNode<String> radice = new TreeNode<String>("Radice"); TreeNode<String> a = new TreeNode<String>("A"); TreeNode<String> b = new TreeNode<String>("B"); TreeNode<String> c = new TreeNode<String>("C"); TreeNode<String> d = new TreeNode<String>("D"); TreeNode<String> e = new TreeNode<String>("E"); TreeNode<String> f = new TreeNode<String>("F"); TreeNode<String> g = new TreeNode<String>("G"); radice.addChild(a); radice.addChild(b); radice.addChild(c); a.addChild(d); a.addChild(e); c.addChild(f); f.addChild(g); /* Radice / | \ A B C / \ \ D E F \ G */ System.out.println("numero foglie = " + numeroFoglie(radice)); } public static int numeroFoglie(TreeNode<?> nodo) { if (nodo.getChildCount() == 0) { // È una foglia! return 1; } else { // Non è una foglia int count = 0; for (int i = 0; i < nodo.getChildCount(); i++) { count += numeroFoglie(nodo.getChild(i)); } return count; } } } class TreeNode<E> { private E element; private ArrayList<TreeNode<E>> children; public TreeNode(E element) { this.element = element; children = new ArrayList<TreeNode<E>>(); } public E getElement() { return element; } public int getChildCount() { return children.size(); } public TreeNode<E> getChild(int index) { return children.get(index); } public void addChild(TreeNode<E> node) { children.add(node); } }
Come determinare le altre informazioni te lo lascio come esercizio .....

Rispondi quotando