代码实现:
# 前序遍历:中左右
def pre_order(bt):
if bt is None:
return
print(bt.val)
pre_order(bt.left)
pre_order(bt.right)
# 中序遍历
def mid_order(bt):
if bt is None:
return
mid_order(bt.left)
print(bt.val)
mid_order(bt.right)
# 后序遍历
def post_order(bt):
if bt is None:
return
post_order(bt.left)
post_order(bt.right)
print(bt.val)
# 反转二叉树
def invert_bin_tree(bt):
if bt is None:
return
temp = bt.left
bt.left = bt.right
bt.right = temp
invert_bin_tree(bt.left)
invert_bin_tree(bt.right)
class TreeNode:
def __init__(self, val=None, left=None, right=None):
self.val = val
self.left = left
self.right = right
if __name__ == '__main__':
'''
D
B E
A C G
F
'''
# 创建树
tree = TreeNode('D', TreeNode('B', TreeNode('A'), TreeNode('C')), TreeNode('E', right=TreeNode('G', TreeNode('F'))))
print('前序遍历:')
invert_bin_tree(tree)
pre_order(tree)
结果:
前序遍历:
D
E
G
F
B
C
A