您的位置:首页 > 其它

二叉树的前序遍历---非递归实现

2016-06-25 11:11 295 查看
二叉树的遍历用递归来实现相当简单,前面已经有文章讨论过,下面来讨论一下二叉树前序遍历的非递归实现。

二叉树的非递归前序遍历主要用栈来实现。根据先序遍历的顺序,先访问根节点,再访问左子树,后访问右子树,而对于每个子树来说,又按照同样的访问顺序进行遍历,先序遍历具体代码如下:

void PrePrint(struct TreeNode *r)
{
struct stack stack1;           //创建一个栈
stack1.top = &stack1.node[0];  //初始化栈指针
struct TreeNode *p =r;         //树的根节点设为p
while(p||!isEmpty(&stack1))
{
if(p!=NULL)
{
printf("%d ",p->data);
push(&stack1,p);
p = p->left;
}
else
{
p=pop(&stack1);
p=p->right;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: