二叉树的遍历
二叉树是递归定义的一种数据结构,所以顺其自然地,我们一般能用递归的方法完成其大部分操作。其中最基本的操作就是二叉树的遍历(前序、中序、后序,表示了根节点被访问的顺序)。
二叉树遍历的递归算法很简单。
Like this
def preOrderTravel(root):
# 前序遍历
if not root is None:
visit(root)
preOrderTravel(root.left)
preOrderTravel(root.right)
def inOrderTravel(root):
# 中序遍历
if not root is None:
inOrderTravel(root.left)
visit(root)
inOrderTravel(root.right)
def postOrderTravel(root):
# 后序遍历
if not root is None:
postOrderTravel(root.left)
postOrderTravel(root.right)
visit(root)
二叉树的这三种操作是其他更复杂操作的基础。
我们主要谈一下二叉树遍历的非递归版本。前序、中序、后序遍历的迭代版本是基于深度优先搜索的思想,在这里我们显式地使用了一个栈。
def preOrderTravel(root):
# 前序遍