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

leetcode——从前序与中序遍历序列构造二叉树(java)

不是很理解这道题的解法,但还是对着题解敲了一遍,不会我们就把它背下来,没必要钻牛角尖。

给定两个整数数组 preorderinorder ,其中 preorder 是二叉树的先序遍历inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

示例 1:

img

输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]
输出: [3,9,20,null,null,15,7]

示例 2:

输入: preorder = [-1], inorder = [-1]
输出: [-1]
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        int n = preorder.length;
        if (n == 0) {
            return null;
        }
        int leftSize = indexOf(inorder, preorder[0]);
        int[] pre1 = Arrays.copyOfRange(preorder, 1, 1 + leftSize);
        int[] pre2 = Arrays.copyOfRange(preorder, 1 + leftSize, n);
        int[] in1 = Arrays.copyOfRange(inorder, 0, leftSize);
        int[] in2 = Arrays.copyOfRange(inorder, 1 + leftSize, n);
        TreeNode left = buildTree(pre1, in1);
        TreeNode right = buildTree(pre2, in2);
        return new TreeNode(preorder[0], left, right);
    }
    private int indexOf(int[] a, int x) {
        for (int i = 0; ; i++) {
            if (a[i] == x) {
                return i;
            }
        }
    }
}


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

相关文章:

  • 【Pandas】pandas Series min
  • 如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
  • 前端25.1.26学习记录
  • 7.DP算法
  • SQL NOW() 函数详解
  • unity学习23:场景scene相关,场景信息,场景跳转
  • stm32小白成长为高手的学习步骤和方法
  • NOTEPAD++编写abap
  • 国土安全保障利器,高速巡飞无人机技术详解
  • CMD模块
  • 嵌入式八股文面试题(一)C语言部分
  • 如何处理 Typecho Joe 主题被抄袭或盗版的问题
  • SpringBoot源码解析(九):Bean定义接口体系
  • 【挖矿——前缀和】
  • 网络工程师 (15)产权人确定
  • ip归属地是不是要打开定位?
  • 【SLAM】于ubuntu18.04上纯CPU运行GCNv2_SLAM的记录(ARM64/AMD64)
  • 图 、图的存储
  • 实现数组的扁平化
  • deepseek-r1模型本地win10部署
  • 使用 SpringBoot+Thymeleaf 模板引擎进行 Web 开发
  • SRS代码目录
  • 中间件的概念及基本使用
  • 基于springboot+vue的航空散货调度系统
  • 五、定时器实现呼吸灯
  • 51单片机 05 矩阵键盘