二叉树的遍历非递归实现

断了今生、忘了曾经 提交于 2019-11-28 15:15:29

二叉树的遍历非递归实现

二叉树的非递归遍历使用栈来实现

  • 由于才用先跟序,遇到节点就应该访问,下一步应该沿着该树的左支下行。
  • 但节点的又支还没有访问,因此需要记录,将又节点压入栈中。
  • 遇到空树就溯回,取出栈中的一个又分支,像一颗二叉树一样遍历它。

代码:

1 def preorder(t, proc):
2     s = Stack()
3     while t is not None or s not s.is_empty():
4         while t is not None:
5             proc(t.data)
6             if t.right:
7                 s.push(t.right)
8             t = t.left
9         t = s.pop()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!