Why do we need it? The iterator is a lineal path over a structure whoes returns the next object, but the Binarytree has a special morphology wich allow us cross throw the nodes by three differents paths.
InOrder:
When we visit a node, we process him, our idea is add it to the list. The method is recursive, we call the own function to visit the full tree.
Sourcecode:
private void recorrerInOrden(BinaryTree t,List l){
if ((t==null)||(l==null))
throw new NullPointerException ("No hay arbol que recorrer, o no se puede guardar el recorrido");
//Llamada recursiva hasta que el arbol este vacio para hacer un tratamiento inOrden
if (!t.isEmpty()){
recorrerInOrden(t.left(),l);
l.add(t.getRoot());
recorrerInOrden(t.right(),l);
}
}
PreOrder:
private void recorrerPreOrden(BinaryTree t, List l){
if ((t==null)||(l==null))
throw new NullPointerException ("No hay arbol que recorrer, o no se puede guardar el recorrido");
// Llamada recursiva hasta que el arbol este vacio para hacer un tratamiento PreOrden
if (!t.isEmpty()){
l.add(t.getRoot());
recorrerPreOrden(t.left(),l);
recorrerPreOrden(t.right(),l);
}
}
PostOrder: Sourcecode:
private void recorrerPosOrden(BinaryTree t,
List l){
if ((t==null)||(l==null))
throw new NullPointerException ("No hay arbol que recorrer, o no se puede guardar el recorrido");
// Llamada recursiva hasta que el arbol este vacio para haver un tratamiento PosOrden
if (!t.isEmpty()){
recorrerPosOrden(t.left(),l);
recorrerPosOrden(t.right(),l);
l.add(t.getRoot());
}
}
No hay comentarios:
Publicar un comentario