- 注册时间
- 2013-2-21
- 最后登录
- 2021-1-8
- 在线时间
- 80 小时
终身VIP会员
- 魔鬼币
- 13638
|
首先看下 递归二叉遍历代码
.子程序 遍历NPC
基址 =XXXXXXXX
遍历NPC_ (基址)
.子程序 遍历NPC_
------------遍历过程省略N字------------------------------------------
左子树 = 读整数型 (基址)
遍历NPC_ (左子树 )
右子树 = 读整数型(基址 + 8)
遍历NPC_ (右子树 )
------------以上是常规递归法遍历二叉树--------------------------
有点是代码逻辑易理解
但是缺点是牺牲了执行效率
下面演示下非递归法的二叉遍历
子程序 遍历NPC
.局部变量 基址, 整数型, , "0" 定义一个二叉遍历基址数组
加入成员 (基址, xxxxxxxx) 将二叉基址放入数组中.判断循环首 (取数组成员数 (基址) > 0) 判断基址内有成员 则进行遍历
对象基址 = 基址 [取数组成员数 (基址)] 取出改基址,并删除数组中该成员
删除成员 (基址, 取数组成员数 (基址), )
----------------------------遍历过程省略N字------------------------------------------
左子树 = 读整数型 (对象基址)
加入成员 (基址, 左子树)
右子树 = 读整数型 (对象基址 + 8)
加入成员 (基址, 右子树) 将左右子树读出加入数组 再跳到循环头部进行判断
.判断循环尾 ()
表达能力有限,看得懂就是看的懂,看不懂的就无视吧
面对二叉内数据很多的时候,递归效率实在是呵呵
|
|