博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(python版)《剑指Offer》JZ4:重建二叉树
阅读量:4090 次
发布时间:2019-05-25

本文共 784 字,大约阅读时间需要 2 分钟。

本系列文章为《剑指Offer》刷题笔记。

刷题平台:

在这里插入图片描述
在这里插入图片描述

# -*- coding:utf-8 -*-# class TreeNode:#     def __init__(self, x):#         self.val = x#         self.left = None#         self.right = Noneclass Solution:    # 返回构造的TreeNode根节点    def reConstructBinaryTree(self, pre, tin):        # write code here                if len(pre) == 0:  # 每次递归时,pre都会更新,当pre为0时,说明该节点下面为空。            return None                    root = TreeNode(pre[0])  # 先使用每次更新的先序列表的第一个结点来创建新的结点        pos = tin.index(pre[0])  # 使用先序的第一个结点到中序 序列中找到索引位置,因为中序的这个索引位置可以将先序序列划分为左右子树        root.left = self.reConstructBinaryTree(pre[1:pos+1], tin[:pos])  # 将先序和中序的序列划分后继续进行父节点的左子树的递归。        root.right = self.reConstructBinaryTree(pre[pos+1:],tin[pos+1:])  # 同上。        return root

https://blog.csdn.net/m0_38109046/article/details/88253963

你可能感兴趣的文章
【Unity】封装SQLite管理类
查看>>
【Unity】面试题整理
查看>>
【C#】如何实现一个迭代器
查看>>
【Unity】Destroy和DestroyImmediate的区别
查看>>
【Lua】Mac系统下配置SublimeText的Lua编译环境
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
【Unity】微信登录后将头像存为bytes,将bytes读取成sprite图片
查看>>
【Unity】使用GPS定位经纬度
查看>>
【UGUI/NGUI】一键换Text/Label字体
查看>>
【C#】身份证本地验证
查看>>
【Unity】坑爹的Bug
查看>>
【算法】求数组中某两个数的和为目标值
查看>>
如何高效学习动态规划?
查看>>
动态规划法(六)鸡蛋掉落问题(一)
查看>>
LeetCode 887.鸡蛋掉落(C++)
查看>>
Dijkstra‘s algorithm (C++)
查看>>
奇异值分解(SVD)的原理详解及推导
查看>>
算法数据结构 思维导图学习系列(1)- 数据结构 8种数据结构 数组(Array)链表(Linked List)队列(Queue)栈(Stack)树(Tree)散列表(Hash)堆(Heap)图
查看>>
求LCA最近公共祖先的离线Tarjan算法_C++
查看>>
Leetcode 834. 树中距离之和 C++
查看>>