剑指Offer 4 :通过中序遍历和先序遍历来重构二叉树
2017-05-18 本文已影响0人
clshinem
题目:
我依旧不想打,如题
主要学习一下递归思想,别的没了
然后就是生成一个树节点,取列表指定树的下标
代码
def reConstructBinaryTree(pre,tin):
if not pre or not tin:
return None
root = TreeNode(pre[0])
tin_index = tin.index(pre[0])
left = self.reConstructBinaryTree(pre[1:], tin[:tin_index])
right = self.reConstructBinaryTree(pre[tin_index+1:], tin[tin_index + 1:])
if left:
root.left = left
if right:
root.right = right
return root
为了测试用例,写了一个二叉树的打印
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
def print_tree(self):
if self.left:
self.left.print_tree()
print self.val
if self.right:
self.right.print_tree()