A
B D
C E G
F
按照这棵树来
typedef struct bitree{
char data;
struct bitree *right;
struct bitree *left;
}bitree;
//下面是他的非递归程序
void preorder(bitree *t)
{bitree stack[100],node;
int top=1;
stack[top]=t;
while(top>0)
{node=stack[top];
top--;
printf("%c",node->data);
if(node->right!=NULL)
{top++;
stack[top]=node->right;
}
if(node->left!=NULL)
{top++;
stack[top]=node->left;
}
}
下面是栈中的情况
空栈 top=0;
////////////////////////////////
A top=1;
///////////////////////////////
B
D top=2;
//////////////////////////////
C
D top=2;
//////////////////////////////
D top=1;
//////////////////////////////
E
G top=2;
///////////////////////////////
F
G top=2;
///////////////////////////////
G top=1;
////////////////////////////////
G出栈 top=0;