Newsgroup: it.comp.java
Titolo: costruire un albero binario

Qualcuno mi sa implementare il codice per costruire un albero binario?
-------
QUESTA E' L'IMPLEMENTAZIONE DEL NODO
public class BTNode {
  private Object element;
  private BTNode left, right, parent;
  /** Costruttore di default */
  public BTNode() {}
  /** Costruttore con parametri  */
  public BTNode(Object o, BTNode u, BTNode v, BTNode w) {
    setElement(o);
    setParent(u);
    setLeft(v);
    setRight(w);
  }
  public Object element() {
    return element;
  }
  public void setElement(Object o) {
    element = o;
  }
  public BTNode getLeft() {
    return left;
  }
  public void setLeft(BTNode v) {
    left = v;
  }
  public BTNode getRight() {
    return right;
  }
  public void setRight(BTNode v) {
    right = v;
  }
  public BTNode getParent() {
    return parent;
  }
  public void setParent(BTNode v) {
    parent = v;
  }
}
QUESTA INVECE E' LA CLASSE CHE IMPLEMENTA L'ALBERO
import java.util.*;
public class LinkedBinaryTree {
  private BTNode root;
  public LinkedBinaryTree(Vector array) {
      // QUI VA IL CODICE PER CREARE UN ALBERO CON GLI OGGETTI DEL Vector
array
      // VA BENE QUALSIASI TIPO DI INSERIMENTO (preorder, postorder,
inorder)
  }
-- 
############################
Q: Mi saprebbe fare un esempio di
     presente progressivo in inglese?
A: Dream Theater
############################

       // VA BENE QUALSIASI TIPO DI INSERIMENTO (preorder, postorder,
inorder)
/* se li puoi mettere in qualsiasi modo, anche a cacchio di cane, ok... li
butto in una catena sinistra, poi magari vedi di bilanciare l'albero
(volendo puoi anche inserirli uno a destra e uno a sinistra...) */
if(array.size() == 0)
        return;
//costruisco una catena con gli elementi di array
Iterator it = array.iterator();
BTNode rootCatena=null, temp=null;
rootCatena = new BTNode();
rootCatena.setElement(it.next());
temp = rootCatena;
while(it.hasNext()) {
        BTNode node = new BTNode();
        node.setElement(it.next());
        node.setParent(temp);
        temp.setLeft(node);
        temp = node;
}
//attacco la catena all'ultima foglia a sinistra
//arriva all'ultima foglia:
for(BTNode n = root, padreN=null ; n!=null ; padreN = n, n = n.getLeft());
if(padreN == null){
  //albero vuoto
  root = rootCatena
}
else {
  padreN.setLeft(rootCatena);
  rootCatena.setParent(padreN);
}
}
Non l'ho controllato e l'ho scritto al volo col newsreader quindi potrebbe
anche non compilare :)
Ciao
Matteo
-- 
chi sono e soprattutto chi non sono:
http://www.ilnomedeldominio.it
un piccolo programma per studenti universitari:
http://inutility.ilnomedeldominio.it

 ha scritto nel messaggio
news:oFm2c.6753$Hl1....@tornado.fastwebnet.it...

Veramente vorrei creare un albero bilanciato e non una catena.
                                A
                              /     \
                             /        \
                           /            \
                         /                \
                        C                S
                        / \                /
                       /   \              /
                      /     \            /
                     /       \          /
                    W      D       8
... di questo tipo per intenderci! Costruire l'albero binario,
ricorsivamente in modo preorder riempiendo da sinistra verso destra. Io sto
uscendo pazzo!!!

 sto uscendo pazzo!!!
Guarda se trovi qualcosa di utile qui:
http://www.dis.uniroma1.it/~damore/asd/materiale.htm
tra le classi della asd_library o in giro per il sito
Ciao
