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

106. 从中序与后序遍历序列构造二叉树 - 力扣(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, inorder: List[int], postorder: List[int]) -> Optional[TreeNode]:
        if not inorder or not postorder:  # 如果任一遍历为空,返回 None
            return None
        
        # 根节点是后序遍历的最后一个元素
        root_val = postorder.pop()
        root = TreeNode(root_val)
        
        # 找到根节点在中序遍历中的位置
        root_index = inorder.index(root_val)
        
        # 划分右子树和左子树(注意:先处理右子树,因为后序遍历是左-右-根)
        right_inorder = inorder[root_index + 1:]
        left_inorder = inorder[:root_index]
        
        # 递归构建右子树和左子树
        root.right = self.buildTree(right_inorder, postorder)
        root.left = self.buildTree(left_inorder, postorder)
        
        return root
相关推荐
橘白3163 分钟前
GVHMR
人工智能·算法·机器人·机器人数据·视频动捕
宵时待雨4 分钟前
优选算法专题3:二分查找
数据结构·c++·算法·leetcode·职场和发展
代码飞一会儿5 分钟前
算法与数据结构之树——让数据查找更加迅速
算法
工业甲酰苯胺5 分钟前
2026 产业 AI 爆发:JNPF 助企业少走 3 年弯路
人工智能·算法·低代码
贾斯汀玛尔斯7 分钟前
每天学一个算法--最短路径问题与三类基本算法
算法
我头发多我先学7 分钟前
C++ AVL 树:平衡原理到完整实现(自平衡二叉搜索树)
开发语言·数据结构·c++·算法
啊我不会诶8 分钟前
2025浙江省赛补题
c++·算法
@小柯555m8 分钟前
算法(字母异位词分组)
java·开发语言·算法·leetcode
故事和你9111 分钟前
洛谷-算法2-1-前缀和、差分与离散化2
开发语言·数据结构·算法·深度优先·动态规划·图论
贾斯汀玛尔斯12 分钟前
每天学一个算法--DFS / BFS
算法·深度优先·宽度优先