Ciao, la logica è piuttosto semplice: per ogni nodo stampi quel nodo, poi il sottoalbero sinistro, poi quello destro.
Ti posto il codice:
codice:import java.util.ArrayList; public class StampaAlbero { public static void stampaSottoalberoSx(ArrayList<Character> lista, int n) { if(2*n+1 < lista.size()) { System.out.println(lista.get(2*n+1)); stampaSottoalberoSx(lista, 2*n+1); stampaSottoalberoDx(lista, 2*n+1); } else return; } public static void stampaSottoalberoDx(ArrayList<Character> lista, int n) { if(2*n+2 < lista.size()) { System.out.println(lista.get(2*n+2)); stampaSottoalberoSx(lista, 2*n+2); stampaSottoalberoDx(lista, 2*n+2); } else return; } public static void stampaAlbero(ArrayList<Character> lista) { System.out.println(lista.get(0)); stampaSottoalberoSx(lista, 0); stampaSottoalberoDx(lista, 0); } public static void main(String[] args) { ArrayList<Character> albero = new ArrayList<Character>(); albero.add('f'); albero.add('a'); albero.add('c'); albero.add('d'); albero.add('b'); albero.add('e'); stampaAlbero(albero); } }
Volendo si potrebbe rendere l'ArrayList globale anziché continuare a passarla. Vedi tu.

Rispondi quotando