您的位置:首页 > 理论基础 > 数据结构算法

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

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

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

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

由此进一步讨论,递归转非递归将经历保存当前函数的变量并将其入栈、调用被调用函数、控制权交给被调用函数,而返回状态时将经历保存被调用函数的变量和返回值即出栈、控制权转交给调用函数、返回值返回给调用函数。由此可见,再将递归函数转化成非递归函数时,入栈的是调用函数的变量,而当返回时要将被调用函数的变量出栈并将出栈之中的返回值返回给主调函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐