给定二叉树的两种遍历方式,我们可以很容易的重构二叉树
这篇文章的图解很清楚 https://blog.youkuaiyun.com/sun_lm/article/details/82888980
现在的题目是:
只给定前序遍历,如何重构二叉树,例如给定124xxx3xx,X表示None
class Node():
def __init__(self, value, left=None, right= None):
self.left = left
self.right = right
self.val = value
index = 0
def construct(tree_str):
'''
if index >= len(tree_str):
return None
'''
global index
if not tree_str:
return
if tree_str[index] == 'x':
index += 1
return None
root = Node(tree_str[index])
index += 1
root.left = construct(tree_str)
root.right = construct(tree_str)
return root
def foreprint(tree): # 该函数用来检查重构的二叉树是否正确
if tree is None:
print "x"
return
print tree.val
foreprint(tree.left)
foreprint(tree.right)
r = construct('124xxx3xx')
foreprint(r)