剑指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()
上一篇下一篇

猜你喜欢

热点阅读