fix Sub/Div swap / fix wrong order for prefix/lisp display
This commit is contained in:
18
tree.c
18
tree.c
@@ -66,19 +66,19 @@ void print_node(node, side, depth, details)
|
||||
return;
|
||||
|
||||
switch (details) {
|
||||
case 1:
|
||||
case 1: /* prefix */
|
||||
if (node->type==TREE_NODE) {
|
||||
printf("%c ", node->op);
|
||||
} else {
|
||||
printf("%d ", node->val);
|
||||
}
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
print_node(node->right, TREE_RIGHT, depth+1, details);
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
break;
|
||||
case 0:
|
||||
case 5:
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
case 0: /* postfix */
|
||||
case 5: /* dc suitable */
|
||||
print_node(node->right, TREE_RIGHT, depth+1, details);
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
if (node->type==TREE_NODE) {
|
||||
printf("%c ", node->op);
|
||||
} else {
|
||||
@@ -87,7 +87,7 @@ void print_node(node, side, depth, details)
|
||||
if (details==5 && depth==0)
|
||||
printf("p");
|
||||
break;
|
||||
case 3:
|
||||
case 3: /* lisp */
|
||||
if (node->type==TREE_NODE) {
|
||||
if (!depth) {
|
||||
printf("(%c", node->op);
|
||||
@@ -105,17 +105,17 @@ void print_node(node, side, depth, details)
|
||||
printf(")");
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case 4: /* infix */
|
||||
if (node->type==TREE_NODE) {
|
||||
printf("(");
|
||||
}
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
print_node(node->right, TREE_RIGHT, depth+1, details);
|
||||
if (node->type==TREE_NODE) {
|
||||
printf(" %c ", node->op);
|
||||
} else {
|
||||
printf("%d", node->val);
|
||||
}
|
||||
print_node(node->right, TREE_RIGHT, depth+1, details);
|
||||
print_node(node->left, TREE_LEFT, depth+1, details);
|
||||
if (node->type==TREE_NODE) {
|
||||
printf(")");
|
||||
}
|
||||
|
Reference in New Issue
Block a user