当前位置: 首页 > article >正文

python-leetcode-从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode)

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
        if not preorder or not inorder:  # 如果任一遍历为空,返回 None
            return None
        
        # 根节点是前序遍历的第一个元素
        root_val = preorder[0]
        root = TreeNode(root_val)
        
        # 找到根节点在中序遍历中的位置
        root_index = inorder.index(root_val)
        
        # 划分左子树和右子树
        left_inorder = inorder[:root_index]
        right_inorder = inorder[root_index + 1:]
        
        left_preorder = preorder[1:1 + len(left_inorder)]
        right_preorder = preorder[1 + len(left_inorder):]
        
        # 递归构建左子树和右子树
        root.left = self.buildTree(left_preorder, left_inorder)
        root.right = self.buildTree(right_preorder, right_inorder)
        
        return root
            


http://www.kler.cn/a/525141.html

相关文章:

  • NLP模型大对比:Transformer > RNN > n-gram
  • Vuex中的getter和mutation有什么区别
  • 【云安全】云原生-K8S-搭建/安装/部署
  • 【NLP251】NLP RNN 系列网络
  • (开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台
  • 为AI聊天工具添加一个知识系统 之76 详细设计之17 正则表达式 之4 正则表达式模板
  • 新年学习计算机名校课程
  • VPR概述、资源
  • 002-基于Halcon的图像几何变换
  • websocket webworker教程及应用
  • Acwing94递归实现排列型枚举
  • 通过配置代理解决跨域问题(Vue+SpringBoot项目为例)
  • 【C语言练习题】整数和实数在计算机中的二进制表示
  • C语言中的函数有哪些种类型
  • Your build is currently configured to use Java 21.0.3 and Gradle 6.6.1. 处理办法
  • go-zero学习笔记(一)
  • 《多线程基础之互斥锁》
  • Java基础知识-第14章-Java注解
  • 上位机知识篇---Linux源码编译安装链接命令
  • web ssti注入
  • 《Operating System Concepts》阅读笔记:p1-p1
  • 基于Springboot的智能学习平台系统【附源码】
  • 让远程也能访问家里的电脑——frp反代
  • Elasticsearch 自定义分成器 拼音搜索 搜索自动补全 Java对接
  • 多线程执行大批量数据查询
  • 手写instanceof、手写new操作符