c语言二叉树非递归创建调用case:(,)"abtreenode",遍历二叉树的非递归算法

void inorder_non_rec(btree tree)

{

ptrtonode temp = tree;//ptrtonode为指向节点的指针类型

struct stack s;

stack_create(&s);//创建一个新堆栈

while (temp)

{

PushLeftTree:

for (;temp;temp = temp->left)

push(&s,temp);//左子树各节点入栈

Visit:

if ((temp = pop(&s)) != NULL)

{

visit(temp);

}

else return;

if (temp->right)

{

temp = temp->right;

goto PushLeftTree;

}

else

goto Visit;

}

stack_free(&s);

}

二叉树遍历的非递归算法,借助堆栈进行遍历(以中序遍历为例):

1、将根节点入栈

2、判断根节点的左子树是否为空,若非空,继续入栈,知道某个节点的左子树为空

3、若为空,则弹出栈顶元素,访问后判断其右子树,若非空,则重复1到3

4、若为空,则重复3

新人出来乍到,语言写的不太清楚,见谅啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值