106 letcode - 重建二叉树

2023-11-13

class Solution:
    """
    内存条里,有两个区域,堆和栈
    其中,栈是我们函数跳转的关键,顺序是先进后出;
    通过压栈出栈,可以实现递归。 
    《1》当到达递归终止条件时候,则开始返回。
        例如: 先序遍历二叉树中,每个节点都要执行三个操作   
        根  左  右 
            当对左子树进行遍历的时候呢,可能这个左子树里还有很多子树,所有会在左子树里进行压栈,当某个
            节点没有左右子节点时候出栈。
        1.1         1
                 2       3
             4     5   6   7
        遍历该数,顺序为根  左  右  
        >>1
        对 2  4  5 ,则
        >>2,4
        4 的左子树为空则,返回上一层,执行完根 左,继续执行5,则 2 4 ->5 
        >>5 
        5 的左右子树为空,则返回上层2 ,以2为根节点的树遍历完成,再向上返回一层递归,返回到以1为
        根节点的树
        接下来则遍历以1为根节点的右子树    3  6 7
        ......
        ......
        
        """
    def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
        index = {val:i for i,val in enumerate(inorder)}
        print(index)
        # build(当前树的列表-先序遍历中根节点的位置,
        # 当前树的列表-中序遍历中左边界,
        # 当前树的列表-中序遍历中右边界)
        def build (root,left,right):
            # 【1】退出条件
            # 退出条件, 根 左 右,是二叉树基本规律,关于二叉树几乎都是这么做的
            if left>right:return 
            rootval= preorder[root]
            print(rootval)
            idroot=index[rootval]
            print(idroot)
            rootnode=TreeNode(preorder[root])
            # print(rootnode.val)
            leftsize = idroot - left
            # 【2】 左右
            rootnode.left = build(root+1,left,idroot-1)
            rootnode.right = build(root+leftsize+1,idroot+1,right)
            return rootnode
        return build(0,0,len(inorder)-1)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

106 letcode - 重建二叉树 的相关文章

随机推荐

  • Vercel和Railway都是云端的平台即服务提供商

    Vercel是一个专注于构建响应快速的现代网站和应用程序的服务平台 它被广泛用于构建静态网站 React应用程序等 Vercel提供全球CDN 构建和部署等强大的功能 支持多种前端框架 此外 Vercel还具有可扩展性 安全性和易用性 可以
  • Junit mock String authToken = request.getHeader(AUTH_TOKEN)

    单元测试 mock String authToken request getHeader AUTH TOKEN 代码示例 String authToken request getHeader AUTH TOKEN TEST示例 Mock M
  • 摸鱼,我是认真的

    苏生不惑第370 篇原创文章 将本公众号设为星标 第一时间看最新文章 今天分享几个有趣好玩的摸鱼网站 app 摸鱼 我是认真的 童年游戏博物馆 这个网站收录了各种童年记忆游戏 冒险岛 超级马里奥等 https www return8090
  • 港中文&商汤提出SMCA:用于DETR快速收敛的空间调制协同注意力

    为了加速DETR收敛 本文提出了一种简单而有效的方案来改进DETR框架 即空间调制协同注意 SMCA 机制 即插即用 让DETR涨点明显 性能优于可变形DETR DETR等网络 注1 文末附 Transformer 和 目标检测 交流群 注
  • VS2013+QT5.8.0配置

    一 安装 因为最近在看图形学的三维重构 需要学习meshlab的一些重建方法 官网找到了编译源码 需要编译 不得不学一下QT 先说说VS2013 QT的配置吧 系统环境 windows10 64bit VS 2013 QT5 8 0 QT5
  • Vue使用axios发送post请求,后端无法接收怎么处理?(Djnago后台)

    今天终于解决了一个困扰很久的问题 在使用Vue进行前端项目的搭建时 通常采用axios作为数据传输的工具 我们会发现 使用get请求一切都正常 但是使用post请求 会发生一些奇怪的事情 这次我使用的是python的web框架django
  • C#开发物联网实践(新手)之门槛

    ABP Cli安装问题 问题描述 想在VS2019上装CLI 输入 dotnet tool install g Volo Abp Cli 结果要求我下载VS2022 刚出的2022VS 我刚看完视频下载的VS2019 解决方法 下载国内版
  • vue教程

    原文 1 vue安装 1 1 直接用 script标签引入 对于制作原型或学习 你可以这样使用最新版本 对于生产环境 我们推荐链接到一个明确的版本号和构建文件 以避免新版本造成的不可预期的破坏 1 2 NPM创建 安装vue npm ins
  • 第14.6节 使用Python urllib.request模拟浏览器访问网页的实现代码

    Python要访问一个网页并读取网页内容非常简单 在利用 第14 5节 利用浏览器获取的http信息构造Python网页访问的http请求头 的方法构建了请求http报文的请求头情况下 使用urllib包的request模块使得这项工作变得
  • 人工智能+物联网+机器人 = AIOTBOT

    借着2019年人工智能 物联网 AIOT 的大潮 我辈机器人是否也能顺势而举 人工智能 物联网 机器人的融合缩写为 AIOTBOT
  • soap development issue

    description No Deserializer found to deserialize a xxx using encoding style yyy reason the requesting envelope xml doesn
  • Flutter 状态栏图标颜色方案

    方案一 使用 AppBar 配置 文章目录 方案一 使用 AppBar 配置 方案二 通过 AnnotatedRegion 控制 注意点 在 AppBar 中配置属性 brightness 其取值 Brightness dark AppBa
  • python如何输出一个数组_python中实现将多个print输出合成一个数组

    python中实现将多个print输出合成一个数组 比如有下面一段代码 for i in range 10 print s f list i name 该代码段的执行 会生成如下的10行 name 属性的字符串 f1 f2 f3 f4 f5
  • 根据请求动态设置 @Value 注入的属性值

    先说一下可以使用的场景 项目中有一些功能类使用了 Value修饰 这种属性取值通常要么是读取 yml 的配置文件 要么是读取配置中心 在我们在本地调试的时候Controller时 如果 如果Service层用到了 Value修饰 的属性时
  • JMeter:使用Docker进行分布式负载测试

    概述 单个的JMeter实例可能无法生成足够的负载来对应用程序进行压力测试 如本网站所示 一个JMeter实例将能够控制多个远程JMeter实例 并在你的应用程序上产生更大的负载 JMeter使用Java RMI Remote Method
  • Angular6 学习笔记——指令

    angular6 x系列的学习笔记记录 仍在不断完善中 学习地址 https www angular cn guide template syntax http www ngfans net topic 12 post 2 系列目录 1 组
  • 骰子【概率dp】

    题目链接 P1409 骰子 因为会有人被弹出队列 所以我设置的期望dp为 表示当现在队列中有i个人的时候 第j个人获胜的概率 于是有当只剩一个人的时候 那个人必胜 再往下 先看它在队首的情况 也就是直接获胜的概率加上它被弹到队尾时候的概率
  • IntelliJ IDEA 2023.2 新版本,拥抱 AI

    IntelliJ IDEA 近期连续发布多个EAP版本 官方在对用户体验不断优化的同时 也新增了一些不错的功能 尤其是人工智能助手补充 AI Assistant 相信在后续IDEA使用中 会对开发者工作效率带来不错的提升 以下是官方对AI
  • LeetCode:动态规划中的0-1背包问题【快来直接套模板啦】

    PS 0 1背包问题无疑是动态规划题目里面的非常经典的一类题目了 下面给出这类题目的一种解题模板 本文是参考代码随想录做的一些笔记 完整版本请戳链接 标准0 1背包问题 二维数组求解 标准的背包问题 有n件物品和一个最多能背重量为w的背包
  • 106 letcode - 重建二叉树

    class Solution 内存条里 有两个区域 堆和栈 其中 栈是我们函数跳转的关键 顺序是先进后出 通过压栈出栈 可以实现递归 1 当到达递归终止条件时候 则开始返回 例如 先序遍历二叉树中 每个节点都要执行三个操作 根 左 右 当对