• Home
  • Forum
  • Area Developer
  • Programmazione
  • Java

Alberi binari

  • Creatore Discussione Creatore Discussione SolidSnake4
  • Data di inizio Data di inizio 30 Mag 2011

SolidSnake4

Utente Attivo
23 Ott 2007
505
0
0
  • 30 Mag 2011
  • #1
Buonasera a tutti,
allora ho un metodo che mi stampa i nodi di un albero ad un dato livello n, questo è il codice:

Codice:
  public void stampaNodi(int i) {
  	stampaNodi(i, root, 0);
  }
  
  public void stampaNodi(int i, Node node, int livello) {
  	if (node == null)
  		return;
  	else {
  		if (livello == i)
  			System.out.print(node.element + ", ");
  			
  		stampaNodi(i, node.left, livello + 1);
  		stampaNodi(i, node.right, livello + 1);
 	}                
  }

entrambi i metodi si trovano nella classe principale dell'albero. La particolarità di questa classe binaryTree e che al suo interno è definita la classe Node private, relativa ai nodi.
Ora volendo mettere in un array i nodi presenti adl livello n dell'albero come si potrebbe fare?
C'ho provato ma non riesco a far avanzare un indice pos che mi scorre le posizioni dell'array.
Qualcuno potrebbe aiutarmi ?

Ho fatto questo e funzia, cmq attendo eventuali suggerimenti e consigli, nell'eventualità ci fosse qualche incoerenza con la ricorsione:

Codice:
  public int[] arrayLevel(int i) {
  	// Recupero la dimensione dell'array richiamando una funzione che restituisce il numero
  	// di nodi presenti al livello i dell'albero
  	int[] arrayNode = new int[dimensioneArray(i, root, 0)];
  	
  	return arrayLevelNode(i, root, arrayNode, 0, 0);
  }
  
  public int[] arrayLevelNode(int i, Node node, int[] array, int pos, int livello) {
  	if (node != null) {
  		if (pos < array.length && livello == i)
	  			array[pos] = node.element;

		arrayLevelNode(i, node.left, array, pos++, livello + 1);
		arrayLevelNode(i, node.right, array, pos++, livello + 1);
  	}
  	
  	return array;
  }
  
  private int dimensioneArray(int i, Node node, int livello) {
  	if (node == null)
  		return 0;
  	else {
  		if (livello == i)
  			return 1;
  		else
  			return dimensioneArray(i, node.left, livello + 1) + dimensioneArray(i, node.right, livello + 1);
  	}
  }
 
Ultima modifica: 30 Mag 2011
Devi accedere o registrarti per poter rispondere.

Discussioni simili

foreign key cancellazione degli alberi figli di un nodo mancante
  • MarcoGrazia
  • 20 Ago 2021
  • MySQL
Risposte
0
Visite
761
MySQL 20 Ago 2021
MarcoGrazia
G
Fare uno sfondo con il prato e degli alberi
  • Giovannino60
  • 8 Mag 2020
  • Photoshop
Risposte
0
Visite
1K
Photoshop 8 Mag 2020
Giovannino60
G
A
spiegazione del programma che implementa gli alberi in java
  • aneres
  • 23 Mag 2012
  • Java
Risposte
7
Visite
8K
Java 24 Mag 2012
aneres
A
T
Alberi JavaScript
  • taykoo
  • 10 Mar 2007
  • Javascript
Risposte
4
Visite
3K
Javascript 12 Mar 2007
taykoo
T
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Area Developer
  • Programmazione
  • Java
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?