zoukankan      html  css  js  c++  java
  • Sword_Offer 重建二叉树[7]

    Sword_Offer 重建二叉树[7]

    0x00 题目描述

    题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果都不含重复的数字.例如:输入前序遍历序列[1,2,4,7,3,5,6,8]和中序遍历序列[4,7,2,1,5,3,8,6].重建二叉树如下并输出它的头节点

    0x01 解题思路

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    # Author LQ6H
    
    class TreeNode:
        def __init__(self,val):
            self.data=val
            self.left=None
            self.right=None
    
    class Solution:
        def Construct(self,preorder,inorder):
            """
            :param preorder: List[int]
            :param inorder: List[int]
            :return: root(TreeNode)
            """
            if not preorder or not inorder:
                return None
    
            if len(preorder)==1:
                return TreeNode(preorder[0])
    
            root=TreeNode(preorder[0])
            idx=inorder.index(preorder[0])
    
            root.left=self.Construct(preorder[1:idx+1],inorder[:idx])
            root.right=self.Construct(preorder[idx+1:],preorder[idx+1:])
    
            return root
    
  • 相关阅读:
    02-自定义CALayer
    01-CALayer的基本操作
    抽屉效果
    手势识别
    事件响应
    寻找最合适的view
    hitTest方法与PointInside方法
    02-事件的产生与传递
    OC图标+启动图
    OC多线程操作
  • 原文地址:https://www.cnblogs.com/LQ6H/p/12940577.html
Copyright © 2011-2022 走看看