遍历操作就是将所有节点查看一边,并可以返回节点的值。
二叉树遍历的分类:
深度优先遍历:
- 前序遍历:先遍历当前节点,再遍历当前节点的左孩子、右孩子,遍历顺序:当前节点>左孩子>右孩子。
- 中序遍历:先遍历当前节点的左孩子,再遍历当前节点、右孩子,遍历顺序:左孩子>当前节点>右孩子
- 后续遍历:先遍历当前节点的左孩子,再遍历右孩子、当前节点,遍历顺序:左孩子>右孩子>当前节点
广度优先遍历:
- 层序遍历:按层数从左到右遍历。
本文主要讲述深度优先的遍历。这三种遍历方式都是通过迭代的思想实现,根据传入的节点,通过一层层的迭代,最后实现遍历的操作。迭代可看成通过栈实现。
现有一棵树,要实现先序遍历
代码实现:
#树的类和节点类的代码省略,代码在本人二分查找树的文章中可查询到
def pre_order(self,node): #递归实现
if node is None:
return
print(node.data)
self.pre_order(node.left)
self.pre_order(node.right)
return node
实现的过程:
中序和后序的遍历原理都差不多,只是将打印输出的位置换了以下,这里不再多做赘述。