[数据结构]对三序非递归遍历二叉树的理解

前几天看听了一个递归到非递归变换的讲座,有些心得不敢独享。故拿出来同大家一起讨论。

三种序列遍历二叉树都要用到栈,栈起的作用是保存树顶的结点以便返回时出栈调用。

先序:按先序的顺序,访问完根要遍历其左子树。若其左子树的度不为零,则要先遍历完左子树才能去遍历根的右子树,而且在树下的要比树上的优先遍历。由此特性,可以用到栈的后入先出特点,把根结点逐一入栈,带左子树访问完时再出栈获得根的地址,再遍历右子树。

由此进一步讨论,递归转非递归将经历保存当前函数的变量并将其入栈、调用被调用函数、控制权交给被调用函数,而返回状态时将经历保存被调用函数的变量和返回值即出栈、控制权转交给调用函数、返回值返回给调用函数。由此可见,再将递归函数转化成非递归函数时,入栈的是调用函数的变量,而当返回时要将被调用函数的变量出栈并将出栈之中的返回值返回给主调函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值