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

Leetcode 从前序与中序遍历序列构造二叉树

在这里插入图片描述

inorderStart 和 inorderEnd 是中序遍历序列下标索引。

java 递归实现

class Solution {
    private HashMap<Integer, Integer> inorderIndexMap;
    private int preorderIndex;

    public TreeNode buildTree(int[] preorder, int[] inorder) {
        inorderIndexMap = new HashMap<>();
        preorderIndex = 0;

        for(int i = 0; i < inorder.length; i++) {
            inorderIndexMap.put(inorder[i], i); //存放中序遍历值和索引的映射
        }

        return Helper(preorder, 0, inorder.length - 1);
        
    }

    private TreeNode Helper(int[] preorder, int inorderStart, int inorderEnd) {
        if(inorderStart > inorderEnd) return null;

        //首先从先根遍历序列中获取当前节点值
        int rootValue = preorder[preorderIndex++];
        TreeNode root = new TreeNode(rootValue);

        //在中根遍历中找到根节点的位置
        int inorderIndex = inorderIndexMap.get(rootValue);

        //构建左子树
        root.left = Helper(preorder, inorderStart, inorderIndex - 1);

        //构建右子树
        root.right = Helper(preorder, inorderIndex + 1, inorderEnd);

        return root;
    }
}

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

相关文章:

  • 认识一下,轻量消息推送 Server-Sent Events
  • 后端java开发路由接口并部署服务器(四)
  • C语言:调试的概念和调试器的选择
  • [coredump] 生成管理
  • Flutter Android修改应用名称、应用图片、应用启动画面
  • 昆仑万维大数据面试题及参考答案
  • B端UI设计规范是什么?
  • 汽车驾校转型做无人机执照培训详解, “驾” 起无人机培训新未来?
  • 大模型LLM-MMOE
  • leetcode 2658. 网格图中鱼的最大数目
  • 【20250101】Nature正刊:纯仿真强化学习得到外骨骼机器人的自适应控制策略
  • 深入浅出:Spring Boot 自定义消息转换器的实现与应用
  • 【单片机】NPN+PNP组成的高边开关无法完全关断
  • SpringBoot与Vue实现WebSocket心跳机制
  • 华为数通考试模拟真题(附带答案解析)题库领取
  • GAN对抗生成网络(二)——算法及Python实现
  • 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测
  • C# 设计模式(行为型模式):责任链模式
  • 分布式微服务项目___某污水处理项目
  • Cornerstone3D:快速搭建可以读取本地文件且四视图显示的Nifti Viewer
  • golang后台框架总结
  • 计算机网络 (19)扩展的以太网
  • Centos 7.6 安装mysql 5.7
  • 静态库封装之ComDir类
  • 数据仓库建设方案和经验总结
  • 【Hackthebox 中英 Write-Up】Web Request | 分析 HTTP 请求和响应