| 
 | |||||||
| 
 | 
|  | 
|  | 
|  | Strumenti | 
|  11-01-2004, 20:55 | #1 | 
| Senior Member Iscritto dal: Apr 2001 Città: Milano 
					Messaggi: 3736
				 | 
				
				alberi binari
			 
		qualcuno sa rappresentarmi tale albero binario nei 3 attraversamenti principali ? anticipato/simmetrico/posticipato Codice:           7 
        /   \
       /     \
     11       8
     / \       \
    /   \       \
  20     4       2
  / \
 /   \
1     3Ultima modifica di misterx : 11-01-2004 alle 21:25. | 
|   |   | 
|  11-01-2004, 22:44 | #2 | 
| Bannato Iscritto dal: Mar 2002 Città: Pescara - 未婚・恋人なし      Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3 
					Messaggi: 27578
				 | 
		Quello non è un albero binario. Quella struttura dati la ha la particolarità che un figlio sinistro di un nodo deve avere la chiave < o = a quella del padre, mentre il figlio destro la deve avere strettamente maggiore. O meglio: se quell'albero la lo vogliamo considerare un albero binario di ricerca (cioè una struttura dati) allora non ha senso, altrimenti rimaniamo nel puro ambito algebrico. E visto che stai parlando di visite dei nodi, siamo nell'ambito "strutture dati": In ogni caso la visita simmetrica (come da nome stesso) significa che scorri i nodi del sottoalbero sinistro, poi la radice e infine i nodi del sottoalbero destro. Ottieni quindi la seguente visita: 1, 20, 3, 11, 4, 7, 8, 2 Analogamente la visita di un albero binario in ordine anticipato significa che elenchi prima la radice e poi i sottoalberi: 7, 11, 20, 1, 3, 4, 8, 2 Per il differito si elencano prima i sottoalberi e solo alla fine si elenca la radice: 1, 3, 20, 4, 2, 11, 8, 7 Comunque sia, quello non è un albero binario di ricerca. | 
|   |   | 
|  11-01-2004, 23:07 | #3 | 
| Senior Member Iscritto dal: Apr 2001 Città: Milano 
					Messaggi: 3736
				 | 
				
				Re: alberi binari
			 
		ok, di ricerca lo hai aggiunto tu; ma quello sotto ora lo è, un "albero di ricerca" cmq, il mio libro li chiama "alberi binari" quello che mi interessa capire è se vi è un ordine specifico da seguire ti hai scritto 1 20 3 ma si poteva anche scrivere 1 3 20 ? Codice:          20 
        /  \
       /    \
      7      24
     / \      \
    /   \      \
   2     11     30
  / \
 /   \
1     5Ultima modifica di misterx : 11-01-2004 alle 23:10. | 
|   |   | 
|  11-01-2004, 23:20 | #4 | 
| Bannato Iscritto dal: Mar 2002 Città: Pescara - 未婚・恋人なし      Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3 
					Messaggi: 27578
				 | 
		No albero binario puro non è una struttura dati bensì una struttura algebrica. Per illustratre i concetti molte volte si usano semplici "alberi binari". In realtà gli algoritmi vanno applicati su "alberi binari di ricerca" altrimenti quelli basati sulle chiavi di un nodo (per esempio inserzione di un nodo e cancellazione) non funzionano. Nel tuo caso le cose funzionano lo stesso perchè l'algoritmo ricorsivo di visita non usa le chiavi dei nodi. L'ordine è quello. Non può essere modificato. In una visita di un albero, la sequenza di nodi visitabili è unica. Pertanto se due alberi binari sono uguali, la sequenza di nodi visitata è identica. 1, 3, 20, ..., non è uguale a 1, 20, 3, ..., | 
|   |   | 
|  12-01-2004, 07:34 | #5 | |
| Senior Member Iscritto dal: Apr 2002 Città: Vigevano(PV) 
					Messaggi: 2124
				 | 
				
				Re: Re: alberi binari
			 Quote: 
 
				__________________ Gnu/Linux User   | |
|   |   | 
|  12-01-2004, 07:36 | #6 | |
| Senior Member Iscritto dal: Apr 2002 Città: Vigevano(PV) 
					Messaggi: 2124
				 | Quote: 
 
				__________________ Gnu/Linux User   | |
|   |   | 
|  12-01-2004, 09:35 | #7 | |
| Bannato Iscritto dal: Jul 2000 Città: Malo (VI) 
					Messaggi: 1000
				 | Quote: 
 In ogni caso nell'ambito delle strutture dati gli alberi binari non vengono utilizzati solo per inserimento/ricerca di dati; l'albero di parsing di una espressione (a sole funzioni binarie) ad esempio e' un albero binario ed e' una struttura dati con le contropalle  . | |
|   |   | 
|  12-01-2004, 19:32 | #8 | 
| Bannato Iscritto dal: Mar 2002 Città: Pescara - 未婚・恋人なし      Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3 
					Messaggi: 27578
				 | 
		Un albero binario di ricerca è tale se e solo se la visita in ordine simmetrico restituisce la sequenza delle chiavi in modo ordinato. Altrimenti è un semplice albero binario. Anche gli alberi Red-Black oltre ad avere le loro proprietà, mantengono le proprietà degli alberi binari di ricerca, cioè le chiavi del sottoalbero sinistro sono <= di quelle del sottoalbero destro. Inoltre sebbene nessuno ti vieti di "inventare" nuove operazioni su un albero, bisogna considerare il significato "puro" dei termini. Un albero di parsing è un albero binario ma non un albero binario di ricerca. E' appunto un albero di parsing. Il fatto che la funzione "<=" non sia l'unica è sbagliato. In un nodo puoi inserire quello che vuoi ma devi avere sempre e solo una chiave che ti consenta di utilizzare confronti, altrimenti, ripeto, non è un albero di ricerca puro. Cioè i confronti non li devi fare su quello che effettivamente vuoi memorizzare nei nodi. Le chiavi sono solo dei mezzi per manipolare le strutture e non come fanno vedere i libri, i dati su cui lavorare. | 
|   |   | 
|  12-01-2004, 19:42 | #9 | 
| Senior Member Iscritto dal: Apr 2000 Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29 
					Messaggi: 53971
				 | 
		Ma lui non aveva chiesto un albero binario di ricerca... "la visita in ordine simmetrico restituisce la sequenza delle chiavi in modo ordinato." Dipende comunque dalla funzione di ordinamento  Concordo con /\/\@®¢Ø nel dire che un albero binario generico è comunque una struttura dati... | 
|   |   | 
|  12-01-2004, 20:28 | #10 | 
| Senior Member Iscritto dal: Sep 2002 Città: Celano (AQ) Segno_Zodiacale: Leone Ascendente: Cammello Segni_Particolari: Quello 
					Messaggi: 9571
				 | 
		allora il mio prof distingueva gli alberi binari, cioè gli alberi formati da nodi che possono avere al max 2 figli, dagli ABR ovvero alberi binari di ricerca dove <figlio_sinistro> < <padre(o radice)> < <figlio_destro>. cmq passando alle visite dovrebbero essere così: simmetrica: 1-20-3-11-4-7-8-2 anticipata (inorder): 7-11-20-1-3-8-2 postiipata (postorder): 1-3-20-4-11-2-8-7 se ho sbagliato (molto probabile  ) correggetemi. | 
|   |   | 
|  12-01-2004, 20:38 | #11 | 
| Senior Member Iscritto dal: Jul 2002 Città: Milano 
					Messaggi: 19148
				 | 
		diamo una definizione più rigorosa di albero binario: un albero può dirsi binario se è vuoto oppure se la sua radice ha al massimo due nodi i quali sono a loro volta degli alberi binari. in particolare si parla di albero binario completo se ogni nodo (escluse naturalmente le foglie) ha esattamente due figli e tutte le foglie sono allo stesso livello, quindi raggiungibili dalla radice con cammini di pari lunghezza. in particolare possiamo notare che in un albero binario il tempo di accesso a ogni elemento è limitato dal logaritmo del numero di nodi, quindi è O(log n). ciò rende gli alberi vantaggiosi per operazioni di inserimento/ricerca di elementi, non per niente si è parlato di alberi binari di ricerca   naturalmente bisogna cercare di bilanciare il più possibile gli elementi all'interno di un albero, poiché in una situazione simile a questa: Codice: o
 \
  o
   \
    oper ora mi fermo qui   | 
|   |   | 
|  12-01-2004, 21:57 | #12 | 
| Senior Member Iscritto dal: Apr 2001 Città: Milano 
					Messaggi: 3736
				 | 
				
				Re: alberi binari
			 
		e volendo implementare in java tale albero ? Codice:           7 
        /   \
       /     \
     11       8
     / \       \
    /   \       \
  20     4       2
  / \
 /   \
1     3Ultima modifica di misterx : 13-01-2004 alle 19:26. | 
|   |   | 
|  13-01-2004, 00:38 | #13 | 
| Senior Member Iscritto dal: Jul 2002 Città: Milano 
					Messaggi: 19148
				 | 
		una piccola correzione, nell'ultima visita (quella posticipata) devi invertire 4 e 11
		 | 
|   |   | 
|  13-01-2004, 02:16 | #14 | ||
| Bannato Iscritto dal: Mar 2002 Città: Pescara - 未婚・恋人なし      Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3 
					Messaggi: 27578
				 | Quote: 
 Quote: 
   | ||
|   |   | 
|  13-01-2004, 02:23 | #15 | |
| Bannato Iscritto dal: Mar 2002 Città: Pescara - 未婚・恋人なし      Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3 
					Messaggi: 27578
				 | Quote: 
 | |
|   |   | 
|  13-01-2004, 10:58 | #16 | |
| Bannato Iscritto dal: Jul 2000 Città: Malo (VI) 
					Messaggi: 1000
				 | Quote: 
  ) ma quello che ha fatto confusione sei stato tu  , visto che non si parlava di ABR da nessuna parte prima del tuo intervento   | |
|   |   | 
|  13-01-2004, 19:28 | #17 | 
| Senior Member Iscritto dal: Apr 2001 Città: Milano 
					Messaggi: 3736
				 | 
				
				Re: Re: alberi binari
			 
		e volendo implementare in java tale albero ?   Codice:           7 
        /   \
       /     \
     11       8
     / \       \
    /   \       \
  20     4       2
  / \
 /   \
1     3 | 
|   |   | 
|  13-01-2004, 21:06 | #18 | 
| Senior Member Iscritto dal: Apr 2001 Città: Milano 
					Messaggi: 3736
				 | 
		recoil, hai la mail-box piena    | 
|   |   | 
|  13-01-2004, 21:59 | #19 | |
| Senior Member Iscritto dal: Jul 2002 Città: Milano 
					Messaggi: 19148
				 | Quote: 
   riguardo al tuo albero non capisco con che logica sono inseriti gli elementi | |
|   |   | 
|  14-01-2004, 07:25 | #20 | 
| Senior Member Iscritto dal: Apr 2002 Città: Vigevano(PV) 
					Messaggi: 2124
				 | Codice:           7 
        /   \
       /     \
      /       \
    1              8
  / \              / \
 /   \            /   \
2    3           /     \
               11     20
				__________________ Gnu/Linux User   | 
|   |   | 
|   | 
| Strumenti | |
| 
 | 
 | 
Tutti gli orari sono GMT +1. Ora sono le: 06:39.









 
		 
		 
		 
		











 
  
 



 
                        
                        










