struct defs
typedefs
global vars
HANDLE_st1 *NewNode(int v);
void PrintIndent(int n, int path);
void PrintSubTree(HANDLE_st1 *h, int n, int path);
void PrintTree(HANDLE_st1 *h);
void InOrder(HANDLE_st1 *h);
HANDLE_st1 *RandTree(int n);
void SwapValue(HANDLE_st1 *l, HANDLE_st1 *r);
void SwapLeft(HANDLE_st1 *l, HANDLE_st1 *r);
void SwapRight(HANDLE_st1 *l, HANDLE_st1 *r);
void Bimerge(HANDLE_st1 *root, HANDLE_st1 *sp_r, int dir);
void Bisort(HANDLE_st1 *root, HANDLE_st1 *sp_r, int dir);
void main(int n);
HANDLE_st1 *NewNode(
int v)
{
local vars
temp_142 = malloc();
h1 = (struct node *) temp_142;
(*h1).value = v1;
(*h1).left = 0;
(*h1).right = 0;
return (h1);
}
void PrintIndent(
int n,
int path)
{
local vars
if ((n1 == 0))
{
/** puts("*") **/
temp_151 = "*";
puts(temp_151);
}
temp_161 = (n1 - 1);
divisor1 = (1 << temp_161);
while ( (n1 > 0) )
{
if ((n1 == 1))
{
if ((path1 == 0))
{
/** puts("/----->") **/
temp_172 = "/----->";
puts(temp_172);
}
else
{
/** puts("\\----->") **/
temp_182 = "\\----->";
puts(temp_182);
}
}
else
{
/** ((path / divisor) == ((path % divisor) / (divisor / 2))) **/
temp_192 = (path1 / divisor2);
temp_212 = (path1 % divisor2);
temp_222 = (divisor2 / 2);
temp_202 = (temp_212 / temp_222);
if ((temp_192 == temp_202))
{
/** puts(" ") **/
temp_232 = " ";
puts(temp_232);
}
else
{
/** puts("| ") **/
temp_242 = "| ";
puts(temp_242);
}
}
path2 = (path1 % divisor2);
divisor3 = (divisor2 / 2);
n2 = (n1 - 1);
}
}
void PrintSubTree(
HANDLE_st1 *h,
int n,
int path)
{
local vars
if ((h1 != 0))
{
r1 = (*h1).right;
temp_251 = (n1 + 1);
temp_261 = (path1 * 2);
PrintSubTree1(r1, temp_251, temp_261);
temp_271 = "(";
puts(temp_271);
put(n1);
temp_281 = ")\t";
puts(temp_281);
PrintIndent2(n1, path1);
temp_291 = " ";
puts(temp_291);
temp_301 = (*h1).value;
put(temp_301);
temp_311 = "\n";
puts(temp_311);
l1 = (*h1).left;
temp_321 = (n1 + 1);
temp_341 = (path1 * 2);
temp_331 = (temp_341 + 1);
PrintSubTree3(l1, temp_321, temp_331);
}
}
void PrintTree(
HANDLE_st1 *h)
{
PrintSubTree1(h1, 0, 0);
}
void InOrder(
HANDLE_st1 *h)
{
local vars
if ((h1 != 0))
{
l1 = (*h1).left;
r1 = (*h1).right;
InOrder1(l1);
temp_351 = (*h1).value;
put(temp_351);
temp_361 = " ";
puts(temp_361);
InOrder2(r1);
}
}
HANDLE_st1 *RandTree(
int n)
{
local vars
if ((n1 > 1))
{
next_val2 = random();
h2 = NewNode1(next_val2);
temp_371 = (n1 / 2);
l2 = RandTree2(temp_371);
temp_381 = (n1 / 2);
r2 = RandTree3(temp_381);
(*h2).left = l2;
(*h2).right = r2;
}
else
{
h3 = 0;
}
return (h4);
}
void SwapValue(
HANDLE_st1 *l,
HANDLE_st1 *r)
{
local vars
temp1 = (*l1).value;
(*l1).value = (*r1).value;
(*r1).value = temp1;
}
void SwapLeft(
HANDLE_st1 *l,
HANDLE_st1 *r)
{
local vars
ll1 = (*l1).left;
rl1 = (*r1).left;
(*l1).left = rl1;
(*r1).left = ll1;
}
void SwapRight(
HANDLE_st1 *l,
HANDLE_st1 *r)
{
local vars
lr1 = (*l1).right;
rr1 = (*r1).right;
(*l1).right = rr1;
(*r1).right = lr1;
}
void Bimerge(
HANDLE_st1 *root,
HANDLE_st1 *sp_r,
int dir)
{
local vars
temp_401 = (*root1).value;
temp_411 = (*sp_r1).value;
temp_391 = (temp_401 > temp_411);
rightexchange1 = (temp_391 ^ dir1);
if ((rightexchange1 != 0))
{
SwapValue1(root1, sp_r1);
}
pl1 = (*root1).left;
pr1 = (*root1).right;
while ( (pl2 != 0) )
{
temp_432 = (*pl2).value;
temp_442 = (*pr2).value;
temp_422 = (temp_432 > temp_442);
elementexchange2 = (temp_422 ^ dir1);
if ((rightexchange1 != 0))
{
if ((elementexchange2 != 0))
{
SwapValue2(pl2, pr2);
SwapRight3(pl2, pr2);
pl3 = (*pl2).left;
pr3 = (*pr2).left;
}
else
{
pl4 = (*pl2).right;
pr4 = (*pr2).right;
}
}
else
{
if ((elementexchange2 != 0))
{
SwapValue4(pl2, pr2);
SwapLeft5(pl2, pr2);
pl6 = (*pl2).right;
pr6 = (*pr2).right;
}
else
{
pl7 = (*pl2).left;
pr7 = (*pr2).left;
}
}
}
temp_451 = (*root1).left;
if ((temp_451 != 0))
{
rl1 = (*root1).left;
rr1 = (*root1).right;
temp_461 = (*root1).value;
sp_l2 = NewNode6(temp_461);
Bimerge7(rl1, sp_l2, dir1);
Bimerge8(rr1, sp_r1, dir1);
(*root1).value = (*sp_l2).value;
}
}
void Bisort(
HANDLE_st1 *root,
HANDLE_st1 *sp_r,
int dir)
{
local vars
temp_471 = (*root1).left;
if ((temp_471 == 0))
{
temp_501 = (*root1).value;
temp_511 = (*sp_r1).value;
temp_491 = (temp_501 > temp_511);
temp_481 = (temp_491 ^ dir1);
if ((temp_481 != 0))
{
SwapValue1(root1, sp_r1);
}
}
else
{
l1 = (*root1).left;
r1 = (*root1).right;
temp_521 = (*root1).value;
sp_l2 = NewNode2(temp_521);
Bisort3(l1, sp_l2, dir1);
temp_531 = (dir1 == 0);
Bisort4(r1, sp_r1, temp_531);
(*root1).value = (*sp_l2).value;
Bimerge5(root1, sp_r1, dir1);
}
}
void main(
int n)
{
local vars
h2 = RandTree1(n1);
sval2 = random();
s2 = NewNode2(sval2);
temp_541 = "Original Tree: ";
puts(temp_541);
PrintTree3(h2);
InOrder4(h2);
temp_551 = (*s2).value;
put(temp_551);
temp_561 = "\n";
puts(temp_561);
Bisort5(h2, s2, 0);
temp_571 = "Sorted Tree: ";
puts(temp_571);
PrintTree6(h2);
InOrder7(h2);
temp_581 = (*s2).value;
put(temp_581);
temp_591 = "\n";
puts(temp_591);
Bisort8(h2, s2, 1);
temp_601 = "Sorted Tree: ";
puts(temp_601);
PrintTree9(h2);
InOrder10(h2);
temp_611 = (*s2).value;
put(temp_611);
temp_621 = "\n";
puts(temp_621);
}
|