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;
本文介绍了一种二叉树的非递归前序遍历算法,并通过具体的示例展示了遍历过程及栈的变化情况。该算法利用栈来辅助遍历操作,有效地实现了非递归方式的前序遍历。
2454

被折叠的 条评论
为什么被折叠?



