|
20鱼币
前面发了个帖子,但基础太差,入栈我直接用数组来替代的,测试代码只能实现一层,没能达到递规的效果;能不能用数组代替出入栈?谢谢大佬们,谢谢师兄师姐们,请尽量为小师弟写得详细些或者动动小手指为小师弟写一下,以供参考研究思路!!!
原代码易语言:
.子程序 二叉树遍历
.参数 首地址, 整数型
.参数 结束标志, 整数型
.参数 次数, 整数型
.参数 对象数组, 整数型, 参考 数组
.参数 进程句柄, 整数型
.局部变量 L, 整数型
.局部变量 R, 整数型
.局部变量 x, 整数型
.如果真 (首地址 ≤ 0)
返回 ()
.如果真结束
.如果真 (次数 > 100)
返回 ()
.如果真结束
次数 = 次数 + 1
x = 内存_读整数型 (进程句柄, 首地址 + 16)
加入成员 (对象数组, x)
L = 内存_读整数型 (进程句柄, 首地址)
R = 内存_读整数型 (进程句柄, 首地址 + 8)
.如果真 (L ≠ 结束标志)
二叉树遍历 (L, 结束标志, 次数, 对象数组, 进程句柄)
.如果真结束
.如果真 (R ≠ 结束标志)
二叉树遍历 (R, 结束标志, 次数, 对象数组, 进程句柄)
.如果真结束
改的代码其它编程工具写的:
功能 循环实现二叉树(首地址, 结束标志, 次数, &对象数组, 下标)
变量 栈位 = 0, 当前节点, 对象, 左子节点, 右子节点, 新建数组 = 数组()
新建数组[栈位] = 首地址
循环(栈位 < 次数)
当前节点 = 新建数组[栈位]
// 如果(当前节点 <= 0)
// 继续
// 结束
对象 = 内存读整数(十进制转十六进制(当前节点 + 16), 下标)
数组追加元素(对象数组, 对象)
左子节点 = 内存读整数(十进制转十六进制(当前节点), 下标)
右子节点 = 内存读整数(十进制转十六进制(当前节点 + 8), 下标)
调试输出("L = " & 左子节点)
调试输出("R = " & 右子节点)
如果(左子节点 <= 0 && 右子节点 <= 0)
调试输出("完成")
返回
结束
如果(左子节点 != 结束标志)
栈位++
新建数组[栈位] = 左子节点
否则如果(右子节点 != 结束标志)
栈位++
新建数组[栈位] = 右子节点
否则
调试输出("完成")
返回
结束
结束
结束
可以记得给我最佳答案 
|
|