遍历思想为:
前序遍历:根结点 ---> 左子树 ---> 右子树
中序遍历:左子树---> 根结点 ---> 右子树
后序遍历:左子树 ---> 右子树 ---> 根结点
首先说下递归的思想:只专注于当前的一个小的步骤,控制号结束条件即可。所以对于遍历来说只需要按照上述规则打印即可。
前序遍历:
class Tree():
def __init__(self, note):
self.value = note
self.right = None
self.left = None
def creatT():
a=Tree(4)
a.right = Tree(3)
a.left = Tree(2)
a.right.right = Tree(5)
a.right.left = Tree(7)
a.left.right = Tree(2)
a.left.left = Tree(9)
return a
def forward(a):
if not a:
return
print(a.value, end=' ')
forward(a.left)
forward(a.right)
a = creatT()
forward(a)
中序遍历:只需要修改打印顺序即可,将打印放在中间,
class Tree():
def __init__(self, note):
self.value = note
self.right = None
self.left = None
def creatT():
a=Tree(4)
a.right = Tree(3)
a.left = Tree(2)
a.right.right = Tree(5)
a.right.left = Tree(7)
a.left.right = Tree(2)
a.left.left = Tree(9)
return a
def forward(a):
if not a:
return
forward(a.left)
print(a.value, end=' ')
forward(a.right)
a = creatT()
forward(a)
后序将打印放在后边。
class Tree():
def __init__(self, note):
self.value = note
self.right = None
self.left = None
def creatT():
a=Tree(4)
a.right = Tree(3)
a.left = Tree(2)
a.right.right = Tree(5)
a.right.left = Tree(7)
a.left.right = Tree(2)
a.left.left = Tree(9)
return a
def forward(a):
if not a:
return
forward(a.left)
forward(a.right)
print(a.value, end=' ')
a = creatT()
forward(a)
参考文献:
1、https://blog.youkuaiyun.com/My_Jobs/article/details/43451187