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)
看懂这张图就看懂中序遍历
后序遍历