剑指offer 重建二叉树 Python实现

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    # 返回构造的TreeNode根节点
    def reConstructBinaryTree(self, pre, tin):
        # write code here
        if len(pre) == 0 or len(tin) == 0:
            return None
        pRoot = pre[0]
        flag = -1
        for i in range(0, len(tin)):
            if tin[i] == pRoot:
                flag = i
                break
        left = self.reConstructBinaryTree(pre[1: flag+1], tin[:flag])
        right = self.reConstructBinaryTree(pre[1+flag: ], tin[flag+1: ])
        node = TreeNode(pRoot)
        node.left = left
        node.right = right
        return node
        

猜你喜欢

转载自blog.csdn.net/z2539329562/article/details/80747561