Leetcode--105. 从前序与中序遍历序列构造二叉树(Java)

根据一棵树的前序遍历与中序遍历构造二叉树。

注意:
你可以假设树中没有重复的元素。

例如,给出

前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:

    3
   / \
  9  20
    /  \
   15   7

代码:

/**

 * Definition for a binary tree node.

 * public class TreeNode {

 *     int val;

 *     TreeNode left;

 *     TreeNode right;

 *     TreeNode(int x) { val = x; }

 * }

 */

class Solution {

    int preorder[];

    int inorder[];

    int count = 0;

    HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();

    public TreeNode buildTree(int[] preorder, int[] inorder) {

        this.preorder = preorder;

        this.inorder = inorder;

        int i = 0;

        for(int x:inorder){

            map.put(x,i++);

        }

        TreeNode head = helper(0,inorder.length);

        return head;

    }

    public TreeNode helper(int left,int right){

        if(left==right){

            return null;

        }

        int root_val = preorder[count];

        TreeNode root = new TreeNode(root_val);

        count++;

        int index = map.get(root_val);//分离左右子树的界限

        root.left = helper(left,index);

        root.right = helper(index+1,right);

        return root;

    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世界最大、最复杂的GPU!这颗集成1000亿个晶体管的芯片长什么样?

来源&#xff1a;EETOP3月25日消息 英特尔于昨日举办了直播活动&#xff0c;新上任的 CEO 帕特基辛格&#xff08;Pat Gelsinger&#xff09; 发表了演讲&#xff0c;并展示了采用 7nm 工艺的 Xe-HPC 高性能 GPU&#xff0c;代号 “Ponte Vecchio”。这款产品封装了 47 个芯片&…

携带cookie进行数据请求

前端进行数据请求有&#xff1a;普通的ajax(json)请求&#xff0c;jsop跨域请求&#xff0c;cors跨域请求&#xff0c;fetch请求...PC端这些请求方式中&#xff0c;普通的ajax(json)请求和jsop跨域请求是默认携带cookie的&#xff0c;而cors跨域请求和fetch请求默认是不携带coo…

Leetcode--145. 二叉树的后序遍历(迭代递归)

给定一个二叉树&#xff0c;返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 代码&#xff1a; 迭代&#xff1a; 从根节点开始依次迭代&#xff0c;弹出栈顶元素输出到输出列表中&#xff0c;然后依次压入它的所有孩子节…

Lucene全文检索

目录结构: 1.全文检索 2.Lucene入门 3.Lucene进阶 全文检索 一, 生活中的搜索: 1.Windows系统中的有搜索功能&#xff1a;打开“我的电脑”&#xff0c;按“F3”就可以使用查找的功能&#xff0c;查找指定的文件或文件夹。搜索的范围是整个电脑中的文件资源。 2.Eclipse中的帮助…

区块链架构下 智慧城市发展加速

来源&#xff1a;中国经济时报智慧城市与区块链技术结合愈加紧密在城市建设和管理上&#xff0c;越来越多的城市开始尝试推动区块链技术在智慧城市项目中应用。中国有杭州聚能城、雄安新区;韩国有“区块链首尔城”;瑞士有“加密谷”楚格;爱沙尼亚和圣马力诺等国家也在纷纷构筑自…

Leetcode--94. 二叉树的中序遍历(迭代递归)

给定一个二叉树&#xff0c;返回它的中序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 代码&#xff1a; 迭代&#xff1a; /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left;…

HDU-1003 Max Sum(动态规划)

题目回顾&#xff08;HDU-1003&#xff09;&#xff1a; Max Sum Problem DescriptionGiven a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequence. For example, given (6,-1,5,4,-7), the max sum in this sequence is 6 (-1) 5 …

揭秘人工智能背后鲜为人知的人工力量——数据标注

来源&#xff1a;帮尼资讯部分参考来源&#xff1a;大数据文摘、点宽DigQuant图片来源&#xff1a;网络尽管随着AI的普及&#xff0c;我们在生活中越来越依赖于人工智能&#xff0c;但“人工智障”的相关调侃也从来没有消失过。相信大家都知道&#xff0c;如果我们想要让AI准确…

Leetcode--144. 二叉树的前序遍历(迭代递归)

给定一个二叉树&#xff0c;返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很简单&#xff0c;你可以通过迭代算法完成吗&#xff1f; 代码&#xff1a; 迭代&#xff1a; /** * Definition for a binary …

诺贝尔奖也难以衡量其贡献,杨振宁的杨-米尔斯理论到底多厉害?

来源&#xff1a;宇宙时空杨振宁先生的贡献&#xff0c;宇称不守恒&#xff0c;打破了诺贝尔奖颁奖的时间记录&#xff0c;比爱因斯坦快了整整16年。可是&#xff0c;跟杨-米尔斯理论相比&#xff0c;它简直不值一提。如果把人类的科学发展比作一场大型的通关游戏现场&#xff…

Leetcode--1019. 链表中的下一个更大节点(java)

给出一个以头节点 head 作为第一个节点的链表。链表中的节点分别编号为&#xff1a;node_1, node_2, node_3, ... 。 每个节点都可能有下一个更大值&#xff08;next larger value&#xff09;&#xff1a;对于 node_i&#xff0c;如果其 next_larger(node_i) 是 node_j.val&a…

美国科研欲重回阿波罗登月水平,基础科学投入计划翻倍

来源&#xff1a;机器之心编辑&#xff1a;泽南、小舟在与中国的全面竞争中&#xff0c;美国希望能在基础科学领域里保持领先&#xff0c;对此其不惜准备将经费投入重新提高到 20 世纪 60 年代「阿波罗登月计划」时期的最高水平。美国众议院科学委员会希望在未来五年内将国家科…

django模板系统(上)

filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对齐 rjust 右对齐 center 居中 length 返回value的长度 slice 切片 first 取第一个元素 last 取最后…

StringBuilder初始化容量以及扩容机制(源码分析)

我们从源码来分析一下StringBuilder的底层原理&#xff1a; /*** Constructs a string builder with no characters in it and an* initial capacity of 16 characters.*/public StringBuilder() {super(16);} 定义一个无参的StringBuilder时&#xff0c;初始化容量为16.例如&…

爬虫爬取百度词条

页面是随时升级的&#xff0c;所以现在的链接不代表以后的链接&#xff0c;但是万变不离其宗&#xff0c;只要学会解析页面&#xff0c;那么就能走的更远。 码云链接&#xff1a;https://gitee.com/ALADL/baike_spider.git from baike_spider import url_manager,html_download…

模仿大脑:下一代计算机

《环球科学》供图光明图片/视觉中国光明图片/视觉中国文章来源&#xff1a;光明日报作者&#xff1a;茱莉格洛利耶【环球科技】引 言在过去几年中&#xff0c;人工智能算法取得了巨大的进步。它在我们日常生活中的应用越来越普遍&#xff0c;经常被用于分析文本或图片的内容&a…

Leetcode--210.课程表Ⅱ

现在你总共有 n 门课需要选&#xff0c;记为 0 到 n-1。 在选修某些课程之前需要一些先修课程。 例如&#xff0c;想要学习课程 0 &#xff0c;你需要先完成课程 1 &#xff0c;我们用一个匹配来表示他们: [0,1] 给定课程总量以及它们的先决条件&#xff0c;返回你为了学完所…

前后端分离使用 Token 登录解决方案

前后端分离使用 Token 登录解决方案&#xff1a;https://juejin.im/post/5b7ea1366fb9a01a0b319612转载于:https://www.cnblogs.com/bydzhangxiaowei/p/9768945.html

新能源关键技术预见的研究

来源&#xff1a;微信公众号科学家&#xff0c;原载于《今日科苑》2020年第11期作者&#xff1a;刘进萍、卢世刚1. 引言新能源是指采用新技术和新材料正在开发利用的新型能源&#xff0c;既包括风能、太阳能、生物质能等可再生能源&#xff0c;也包括核能、氢能等其他非化石能源…

Leetcode--152. 乘积最大子数组(java)

给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的连续子数组&#xff08;该子数组中至少包含一个数字&#xff09;&#xff0c;并返回该子数组所对应的乘积。 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2: 输入: [-2,0,-1] 输出…