(3.5)--第5章 树和二叉树-11-拓展【二叉树遍历非递归算法】.pdfVIP

  • 5
  • 0
  • 约2.59千字
  • 约 6页
  • 2024-03-15 发布于广东
  • 举报

(3.5)--第5章 树和二叉树-11-拓展【二叉树遍历非递归算法】.pdf

二叉树的非递归遍历算法

1.先序遍历

遍历顺序:根节点—左孩子—右孩子

算法过程:

从当前节点开始遍历:

1.若当前节点存在,就存入栈中,并访问左子树;

2.直到当前节点不存在,就出栈,并通过栈顶节点访问右子树;

3.不断重复12,直到当前节点不存在且栈空。

过程如下:

注意:因为采用的是栈操作,根据栈“先入后出”的特点,在进栈之前就要访问

节点的元素

上图访问顺序为:12453

代码实现如下:

voidpreorder(bitree*t)//前序遍历的非递归算法{

bitree*temp=t;//定义一个树节点,用它来遍历

while(temp!=NULL||s.top!=0)

{

while(temp!=NULL)//先遍历左孩子,并输出。

{

printf(%4d,temp-data);

push(temp);

temp=temp-lchild;

}

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档