Construct Binary Tree from Preorder and Inorder Traversal - Leetcode

本文介绍了一种通过先序遍历和中序遍历构建二叉树的方法。利用递归算法,文章详细解释了如何根据这两种遍历方式确定树的结构。先序遍历为中左右,中序遍历为左中右,通过对比两种遍历结果,可以准确地构建出原始的二叉树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        return buildTreeHelper(preorder, 0 ,preorder.length-1, inorder, 0, inorder.length-1);
    }
    
    private TreeNode buildTreeHelper(int[] pre, int pre_start, int pre_end, int[] in, int in_start, int in_end){
        if(in_start > in_end || pre_start > pre_end)
           return null;
        int root_val= pre[pre_start];
        int root_id=0;
        for(int i=in_start; i<=in_end; i++){
            if(in[i] == root_val){
               root_id = i;
               break;
            }
        }
        
        int distance = root_id-in_start;
        TreeNode root = new TreeNode(root_val);
        
        root.left = buildTreeHelper(pre, pre_start+1, pre_start+distance, in, in_start, root_id-1);
        root.right = buildTreeHelper(pre, pre_start+distance+1, pre_end, in, root_id+1, in_end);
        
        return root;
    }
    
}

1)找到根节点,2)求出左子树的个数,逐个深入扩展左根节点,右根节点。
*题目中的特征是:
先序遍历:<span style="background-color: rgb(255, 102, 102);">中</span>左右
中序遍历:左<span style="background-color: rgb(255, 102, 102);">中</span>右
后序遍历:左右<span style="background-color: rgb(255, 102, 102);">中</span>
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值