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
相关推荐
谈笑也风生8 分钟前
经典算法题型之排序算法(四)
数据结构·算法·排序算法
AI科技星9 分钟前
空间螺旋电磁耦合常数 Z‘:拨开迷雾,让电磁力变得直观易懂
服务器·人工智能·科技·算法·生活
亚伯拉罕·黄肯22 分钟前
强化学习算法笔记
笔记·算法
only-qi23 分钟前
LeetCode 148. 排序链表
算法·leetcode·链表
岁岁的O泡奶27 分钟前
NSSCTF_crypto_[SWPUCTF 2023 秋季新生赛]dpdp
经验分享·python·算法·密码学
smj2302_7968265227 分钟前
解决leetcode第3791题.给定范围内平衡整数的数目
python·算法·leetcode
不能只会打代码29 分钟前
力扣--1970. 你能穿过矩阵的最后一天(Java)
java·算法·leetcode·二分查找·力扣·bfs·最后可行时间
AndrewHZ42 分钟前
【图像处理基石】如何高质量地生成一张庆祝元旦的图片?
图像处理·人工智能·opencv·算法·计算机视觉·生成式模型·genai
光明西道45号43 分钟前
Leetcode 15. 三数之和
数据结构·算法·leetcode
还不秃顶的计科生1 小时前
LeetCode 热题 100第一题:两数之和python版本
python·算法·leetcode