我确定很多人不能真正的理解二叉树……

python 递归遍历二叉树_后序遍历

class Node:  
def __init__(self,value=0,left=0,right=0):
self.value=value
self.left=left #左子树
self.right=right #右子树

def preTraverse(root):
'''
前序遍历
'''
#print('#'*6)
if root==0:
#print('这个节点的值是',root)
return 9
print(root.value)
preTraverse(root.left)
preTraverse(root.right)

def midTraverse(root):
'''
中序遍历
'''
if root==0:
#print('这个节点的值是',root)
return
midTraverse(root.left)
print(root.value)
midTraverse(root.right)

def afterTraverse(root):
'''
后序遍历
'''
if root==0:
return
afterTraverse(root.left)
afterTraverse(root.right)
print(root.value)


if __name__=='__main__':
root=Node('D',
Node('B',Node('A'),Node('C')),
Node('E',Node('G'),Node('F'))

)

print('前序遍历:')
preTraverse(root)
print('\n')
print('中序遍历:')
midTraverse(root)
print('\n')
print('后序遍历:')
afterTraverse(root)
print('\n')
前序遍历:
D
B
A
C
E
G
F


中序遍历:
A
B
C
D
G
E
F


后序遍历:
A
C
B
G
F
E
D

先序遍历

对于二叉树的的遍历很可以用递归,递归很难理解,那我们就来捋一捋。

if root==0:
print('这个节点的值是',root)
return 9
print(root.value)
preTraverse(root.left)
preTraverse(root.right)

python 递归遍历二叉树_中序遍历_02

看懂这张图就看懂中序遍历

python 递归遍历二叉树_前序遍历_03

后序遍历

python 递归遍历二叉树_前序遍历_04