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

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

python 复制代码
# 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
            
相关推荐
学习2年半24 分钟前
小米笔试题:一元一次方程求解
算法
MATLAB代码顾问28 分钟前
MATLAB绘制多种混沌系统
人工智能·算法·matlab
极客BIM工作室1 小时前
演化搜索与群集智能:五种经典算法探秘
人工智能·算法·机器学习
qq_574656251 小时前
java-代码随想录第66天|Floyd 算法、A * 算法精讲 (A star算法)
java·算法·leetcode·图论
金融街小单纯2 小时前
从蓝军建设中学习颠覆性质疑思维
人工智能·算法·机器学习
测试老哥2 小时前
如何编写好测试用例?
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
少许极端3 小时前
算法奇妙屋(五)-链表
数据结构·算法·链表
XISHI_TIANLAN3 小时前
【多模态学习】Q&A6: 什么是MOE架构?Router Z Loss函数是指什么?负载均衡损失(Load Balancing Loss)又是什么?
学习·算法·语言模型
木子.李3473 小时前
数据结构-算法C++(额外问题汇总)
数据结构·c++·算法
花心蝴蝶.4 小时前
API签名认证算法全解析
算法