6.37③ test directly using the basic operation of the stack to write out the first order traversal of the non-recursive
The form of the algorithm (hint: Do not have to press 3.3.2 section from recursive to non-recursive
Method and write the non recursive algorithm directly.
Requires that the following functions be implemented:
void Preorder (Bitree bt, Void (*visit) (Telemtype));
/* Using the stack, non-recursive first-order traversal of the binary tree bt, * *
/* The element domain data call function for each node visit * *
Binary link list type definition:
typedef struct BITNODE {
Telemtype data;
Bitnode *lchild,*rchild;
} Bitnode, *bitree;
The relevant definitions of stack type stacks available:
typedef bitree SELEMTYPE; The element type of the stack
Status Initstack (Stack &s);
Status stackempty (Stack S);
Status Push (Stack &s, Selemtype e);
Status POPs (Stack &s, Selemtype &e);
Status GetTop (Stack S, Selemtype &e);
Void Preorder (Bitree bt, Void (*visit) (Telemtype)
/* using stacks, non-recursive first-order traversal of binary tree bt, */
/* The element domain data call function for each node visit */
{
//The node is pushed into the stack to facilitate access to the node's right node
Bitree p = bt;
&NBSP ; Stack s; &NBSP
Initstack (s);
while (P | |!) Stackempty (s)) {
if (p) {
Visit (p->data)
Push (S, p);
-P = p->lchild;
}else{
POP (S, p);
p = p->rchild;
}
}