import java.util.*; public class Tree { private E root; private LinkedList> subtrees; /** * Costruisce un albero con un singolo nodo di valore val */ public Tree(E val) { root = val; subtrees = new LinkedList>(); } /** * Ritorna il valore dell'elemento alla radice dell'albero */ public E getRoot() { return root; } /** * Modifica il valore dell'elemento alla radice dell'albero */ public void setRoot(E val) { root = val; } /** * Ritorna una collection di tipo List (ad es. LinkedList o ArrayList) * contenente i sottoalberi corrispondenti ai figli della radice */ public List> getSubtrees() { return subtrees; } /** * Aggiunge un nuovo figlio di valore val alla radice * e restituisce il corrispondente sottoalbero */ public Tree addChild(E val) { Tree c = new Tree(val); subtrees.add(c); return c; } /* * Rimuove dall'albero tutti i sottoalberi corrispondenti ai figli della radice */ public void removeChildren() { subtrees = new LinkedList>(); } }