1 two-tree graph to create
2 output result diagram:
3 The complete code is as follows:
#include <stdio.h> #include <malloc.h>//define binary tree typedef struct btreenode{char name;
struct Btreenode *lbtreenode;
struct Btreenode *rbtreenode;
}btreenode,*pbtreenode;
Pbtreenode Createbttree ();
void Pretraversal (Pbtreenode node);
void Inordertraversal (Pbtreenode node);
void Aftertraversal (Pbtreenode node);
int main (void) {Pbtreenode head = Createbttree ();
The pre-order traversal printf ("Sequential traversal result is:");
Pretraversal (head);
printf ("\ n");
The middle sequence traverses printf (the "middle sequence traversal result is:");
Inordertraversal (head);
printf ("\ n");
Sequential traversal of printf ("post-order traversal results are:");
Aftertraversal (head);
printf ("\ n");
return 1;
};
Create two fork Tree Pbtreenode createbttree () {Pbtreenode A = (Btreenode *) malloc (sizeof (Btreenode));
A->name = ' A ';
Pbtreenode B = (Btreenode *) malloc (sizeof (Btreenode));
B->name = ' B ';
Pbtreenode C = (Btreenode *) malloc (sizeof (Btreenode));
C->name = ' C ';
Pbtreenode D = (Btreenode *) malloc (sizeof (Btreenode));
D->name = ' D ';
Pbtreenode E = (Btreenode *) malloc (sizeof (Btreenode));E->name = ' E ';
Pbtreenode H = (Btreenode *) malloc (sizeof (Btreenode));
H->name = ' H ';
Pbtreenode G = (Btreenode *) malloc (sizeof (Btreenode));
G->name = ' G ';
Pbtreenode O = (Btreenode *) malloc (sizeof (Btreenode));
O->name = ' O ';
Pbtreenode P = (Btreenode *) malloc (sizeof (Btreenode));
P->name = ' P ';
Pbtreenode L = (Btreenode *) malloc (sizeof (Btreenode));
L->name = ' L ';
Pbtreenode M = (Btreenode *) malloc (sizeof (Btreenode));
M->name = ' M ';
A->lbtreenode = B;
A->rbtreenode = C;
B->lbtreenode = H;
B->rbtreenode = G;
C->lbtreenode = D;
C->rbtreenode = NULL;
D->lbtreenode = NULL;
D->rbtreenode = E;
E->lbtreenode = L;
E->rbtreenode = M;
L->lbtreenode = NULL;
L->rbtreenode = NULL;
M->lbtreenode = NULL;
M->rbtreenode = NULL;
H->lbtreenode = NULL;
H->rbtreenode = NULL;
G->lbtreenode = O;
G->rbtreenode = P;
O->lbtreenode = NULL;
O->rbtreenode = NULL; P->lbtreenode = NULL
P->rbtreenode = NULL;
return A;
};
First-order traversal of void Pretraversal (Pbtreenode node) {if (node = = NULL) return;
printf ("%c", node->name);
if (node->lbtreenode! = NULL) {pretraversal (Node->lbtreenode);
};
if (node->rbtreenode! = NULL) {pretraversal (Node->rbtreenode);
};
};
L Middle sequence traversal void Inordertraversal (Pbtreenode node) {if (node = = NULL) return;
if (node->lbtreenode! = NULL) {inordertraversal (Node->lbtreenode);
};
printf ("%c", node->name);
if (node->rbtreenode! = NULL) {inordertraversal (Node->rbtreenode);
};
};
Post-post traversal of void Aftertraversal (Pbtreenode node) {if (node = = NULL) return;
if (node->lbtreenode! = NULL) {aftertraversal (Node->lbtreenode);
};
if (node->rbtreenode! = NULL) {aftertraversal (Node->rbtreenode);
};
printf ("%c", node->name);
};