二叉树的遍历
二叉树的遍历也是分治策略的一种思想,今天我们讲一下二叉树的三种递归遍历方法。
在介绍二叉树的遍历之前我们先来聊一下什么是二叉树吧。所谓二叉树,其实就是若干点的有限集合。它和链表队列这些结构不同,树是一种非线性的结构,而二叉树则是树的一种特殊情形,是一种更简单而且应用更加广泛的树。二叉树常被用于实现二叉查找树和二叉堆。
二叉树的python简单实现:
class TreeNode:
def __init__(self, value=None, left=None, right=None):
self.value = value
self.left = left
self.right = right
# 在此,我们不写树的类,简单地使用节点类手动实现一颗二叉树
SimpleTree = TreeNode("A",
TreeNode("B",
TreeNode("D"),
TreeNode("E")
),
TreeNode("C",
TreeNode("F"),
TreeNode("G")
)
)
二叉树的遍历
今天我们介绍二叉树的三种递归遍历方法——前序遍历、中序遍历、后序遍历。
其中这三种遍历都属于深度优先遍历(以后还会有广度优先遍历)。前序遍历的方式是先访问根节点,再遍历左右子树;中序遍历是遍历左子树,再访问根节点,再遍历右子树;后序遍历是先访问左右节点,再遍历根节点
# 前序遍历
def PreTraverse(root):
if root is None:
return
print(root.value)
PreTraverse(root.left)
PreTraverse(root.right)
# 中序遍历
def MidTraverse(root):
if root is None:
return
MidTraverse(root.left)
print(root.value)
MidTraverse(root.right)
# 后序遍历
def AfterTraverse(root):
if root is None:
return
AfterTraverse(root.right)
AfterTraverse(root.left)
print(root.value)
欢迎关注公众号 : 数学算法实验室
专注于算法与人工智能知识