为了账号安全,请及时绑定邮箱和手机立即绑定

二叉树遍历

二叉树遍历

慕粉1946598640 2017-08-26 22:52:23
二叉树相关知识,使用数据结构中的栈(stack),对二叉树前中后序遍历的实现
查看完整描述

2 回答

?
真正大英雄王思文

TA贡献3条经验 获得超1个赞

老铁你好。不知道你是否已经理解了递归的三种遍历是如何实现的,如果没有,建议先弄明白递归如何实现三种遍历。

说到底,这里的递归起到的实际上是回溯父节点的能力,例如当前递归中,没有了left和right,当前递归就会结束,从而返回到上一层递归中。

这里使用栈,实际上就是想办法用栈代替递归,说到底又是使用栈记录访问节点的路径,以便当前节点找到自己的父节点。如果理解了递归的遍历原理,这里就简单了。

伪代码(前序为例):

1.访问当前结点a,并将结点a入栈;

2.判断左孩子是否为空:

    空:判断a = 弹栈->右孩子是否为空:

        空:继续弹栈,直到右孩子不为空。跳转到1

    不空:a = a->左孩子。

3.栈为空并且还需要弹栈,结束循环。


查看完整回答
反对 回复 2017-08-29
  • 慕粉1946598640
    慕粉1946598640
    当右孩子下还有左节点呢,不能一直找到右孩子为空吧
  • 真正大英雄王思文
    真正大英雄王思文
    找到右孩子后就跳转到1了呀,下一步不就是判断左孩子是否为空了吗?你可以画一个二叉树,对照着一步一步走看看。
?
言曌博客liuyanzhao_com

TA贡献164条经验 获得超116个赞

这种你百度一下就有的,大一学数据结构书上好像也有吧

查看完整回答
反对 回复 2017-08-27
  • 2 回答
  • 0 关注
  • 1694 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信