开发者社区> 问答> 正文

先序遍历二叉树非递归算法如何理解??

先序遍历二叉树非递归算法如何理解??

展开
收起
知与谁同 2018-07-17 17:23:16 1699 0
2 条回答
写回答
取消 提交回答
  • 非递归的话,就用堆栈实现了啊
    2019-07-17 22:55:14
    赞同 展开评论 打赏
  • TA有点害羞,没有介绍自己...
    先序遍历是中->左->右 进行遍历,每次 读入中后,下一步是读入左,读入左的下一步是读入右,但是左可能也是一颗树,那么 右就应该被压栈,保存。等左读完了,取出右再读入。对子树进行同样的操作。也就是 除了叶子节点,所有的右子节点都要压一次栈。 递归的是调用的系统栈,非递归的是用 堆中的数组来模拟系统栈。最直观的概念是 如果你有一个大任务,可以分成几个小任务,为了知道做完一个小任务后怎么办,你应当把其他小任务记下来,记到本子上。

    -------------------------

    递归不递归只是表象,本质都是压栈,出栈的操作,只不过递归是以函数为元素进行的栈操作,不递归算法就是把树的元素来栈操作,在一个函数内部完成,看起来就没有递归。

    2019-07-17 22:55:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载