|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
|
[Java] Esercizio..urgente!
Salve, qualcuno di voi sà come posso risolvere quest'esercizio in java relativo agli alberi binari???
![]() Queste sono le varie classi (un grazie davvero x chi mi può aiutare ![]() ****************************** classe BTNode.java **************************** package BinTrees; class BTNode { Object key; // valore associato al nodo BTNode parent; // padre del nodo BTNode left; // figlio sinistro del nodo BTNode right; // figlio destro del nodo // post: ritorna un albero di un solo nodo, con valore value e sottoalberi // sinistro e destro vuoti BTNode(Object ob) { key = ob; parent = left = right = null; } // post: ritorna un albero contenente value e i sottoalberi specificati BTNode(Object ob, BTNode left, BTNode right, BTNode parent) { key = ob; this.parent = parent; setLeft(left); setRight(right); } .... .... } ****************************** classe BinaryTree.java **************************** package BinTrees; import java.util.Iterator; import Queues.*; public class BinaryTree implements BT { private BTNode root; // la radice dell’albero private BTNode cursor; // puntatore al nodo corrente private int count; // numero nodi dell’albero // post: crea un albero binario vuoto public BinaryTree() { root = null; cursor = null; count = 0; } .... .... } ****************************** classe QueueCollegata.java **************************** package Queues; public class QueueCollegata implements Queue { private QueueRecord head; // puntatore al primo elemento in coda private QueueRecord tail; // puntatore all’ultimo elemento della coda private int count; // numero di elementi in coda // post: costruisce una coda vuota public QueueCollegata() { head = null; tail = null; count = 0; } // post: ritorna il numero di elementi nella coda public int size() {...} // post: ritorna true sse la coda e’ vuota public boolean isEmpty() {...} // post: svuota la coda public void clear() {...} // pre: coda non vuota // post: ritorna il valore del primo elemento della coda public Object front() {...} // pre: value non nullo // post: inserisce value in coda public void enqueue(Object ob) {...} // pre: coda non vuota // post: ritorna e rimuove l’elemento il primo elemento in coda public Object dequeue() {...} } Ultima modifica di alebertaz : 25-06-2006 alle 22:04. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Le visite da fare sono due:
- la prima ritorna il numero di nodi dell'albero passato in ingresso (compreso il nodo radice); - la seconda effettua una visita dell'albero e pone nella code il nome del nodo ed il numero di nodi calcolato con il metodo definito prima. Se hai problemi, pubblico una traccia. Please, quando posti il codice, usa l'apposito tag, cosi' si mantengono le indentazione ed e' tutto piu' facile da leggere High Flying Sottovento
__________________
In God we trust; all others bring data |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
|
Quote:
![]() Si, se ti è possibile pubblicare una traccia, così capisco meglio come funziona la ricorsione sul metodo sottoalberi(). Sorry per il codice senza indentazione ma è la prima volta che posto in questa sezione... grazie ancora |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2004
Città: Padova
Messaggi: 1870
|
Questa soluzione è giusta? (Il metodo che ritorna il numero di nodi non l'ho implementato ma volevo sapere se il resto è ok...)
Codice:
public void PostOrderBuild (BTNode n) { if (n!=NULL) { PostOrderBuild(n.left); PostOrderBuild(n.right); q.enqueue("n.key + valore ritornato dal metodo che ritorna il numero di nodi"); } } public QueueCollegata sottoalberi() { QueueCollegata q=new QueueCollegata(); if (root!=NULL) PostOrderBuild(root); return q; else return NULL; } Ultima modifica di alebertaz : 26-06-2006 alle 09:03. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:31.