/*
Mohamed Anis MEKKI - 2003 (c)
*/
public class tree
{
symbol root;
tree right;
tree left;
tree[] lefts = new tree[1000];
int pos=0;
tree[] last_lefts = new tree[10];
int last_pos=-1;
public tree ( symbol s,tree r,tree l)
{
root = s;
right = r;
left = l;
}
public static tree[] classify_tree_up(tree[] t,int l)
{
int i=0;
boolean notyet = true;
tree permut = new tree(null,null,null);
while (notyet)//while 1
{
i=0;
notyet = false;
while ( i < l )// while 2
{
if ( ((t[i]).root).prob < ((t[i+1]).root).prob )// if 1
{
permut = t[i];
t[i] = t[i+1];
t[i+1] = permut;
notyet = true;
}// end if 1
i++;
}// end while 1
}// end while 2
return(t);
}// end classify_up()
public void show_right(tree[] t, int l)
{
tree vase = new tree(null,null,null);
vase = this;
while( vase != null )
{
if ( (vase.right) !=null )
{
(vase.root).show_prob();
System.out.print("___");
}// fin if
else
{
(vase.root).show_tree();
}
vase = (vase.right);
} // fin while
System.out.println("");
}// fin show_right()
public void make_lefts()
{
tree vase = new tree(null,null,null);
vase = this;
int i=0;
while ( i < last_pos )
{
lefts[i] = last_lefts[i];
i++;
}
while( vase != null )
{
lefts[i] = vase.left;
vase = (vase.right);
i++;
} // fin while
pos=i;
}// fin make_left()
public void go(int order, String s)
{
int off=0;
int deb = 4;
if ( order == 0)
{
deb = 2;
}
int fin = 4;
while ( off < deb )
{
System.out.print(" ");
off++;
}
System.out.print(s);
off=0;
while ( off < fin )
{
System.out.print(" ");
off++;
}
}
public void decale(tree[] tab, int l)
{
int i=0;
while ( i <= l)
{
if ( tab[i] != null )
{
//System.out.print(" | ");
go(i,"|");
}
else
{
//System.out.print(" ");
go(i," ");
}
i++;
}
System.out.println("");
i=0;
while ( i < l)
{
if ( tab[i] != null )
{
//System.out.print(" | ");
if ( i==(l-1) )
{
go(i,"| ");
}
else
{
go(i,"|");
}
}
else
{
//System.out.print(" ");
if ( i==(l-1) )
{
go(i," ");
}
else
{
go(i," ");
}
}
i++;
}
}
public void show ()
{
show_right(this.lefts,pos);
make_lefts();
int k=pos;
while ( k >= Math.max(last_pos,0) )
{
if ( lefts[k] != null )
{
lefts[k].last_lefts = this.lefts;
lefts[k].last_pos = k;
decale(this.lefts,k);
lefts[k].show();
}
else
{
}
k--;
}
}
public static void main( String args[] )
{
symbol anis = new symbol("anis",0.2);
symbol nabil = new symbol("nabil",0.3);
symbol cnss = new symbol("cnss",9.9);
symbol male = new symbol("male",0.1);
symbol female = new symbol("female",0.0);
symbol sawsen = new symbol("sawsen",0.4);
symbol azza = new symbol("azza",0.5);
tree a1 = new tree(anis,null,null);
tree a2 = new tree(nabil,null,null);
tree a3 = new tree(sawsen,null,null);
tree a4 = new tree(azza,null,null);
tree a8 = new tree(male,a1,a2);
tree a9 = new tree(female,a3,a4);
tree a0 = new tree(cnss,a8,a9);
tree a11 = new tree(cnss,a0,a0);
tree a12 = new tree(cnss,a11,a11);
tree a13 = new tree(cnss,a12,a12);
tree a = new tree(cnss,a13,a13);
a.show();
System.out.println("");
}
}