1.构建二叉树
根据二中方法构建目标二叉树,并输出前序遍历结果进行校验:
pre_order = list('abdehicfg')
mid_order = list('bdheiafcg')
pre = None
class TreeNode(object):
def __init__(self, data, left_node, right_node):
self.val = data
self.left_node = left_node
self.right_node = right_node
def create_tree(pre_order, in_order):
if len(pre_order) == 0:
return
root_val = pre_order[0]
for root_index, v in enumerate(in_order):
if v == root_val:
break
left = create_tree(pre_order[1:root_index+1], in_order[:root_index])
right = create_tree(pre_order[root_index+1:], in_order[root_index+1:])
return TreeNode(root_val, left, right)
def pre_order_traversal(root):
if root is None:
return
print(root.val, end='')
pre_order_traversal(root.left_node)
pre_order_traversal(root.right_node)
2.设置全局变量
设置全局变量,利用中序遍历方法,找到目标key节点的前一个节点
def in_order_traversal(root, key):
global pre
if root is None:
return
in_order_traversal(root.left_node, key)
# print(root.val, end='')
if key == root.val:
print(pre.val)
if root is not None:
pre = root
in_order_traversal(root.right_node, key)
root = create_tree(pre_order, mid_order)
pre_order_traversal(root)
print(' ')
in_order_traversal(root, 'a')