106. Construct Binary Tree from Inorder and Postorder Traversal「建议收藏」

106. Construct Binary Tree from Inorder and Postorder Traversal「建议收藏」106. Construct Binary Tree from Inorder and Postorder Traversal

大家好,又见面了,我是你们的朋友全栈君。

Given inorder and postorder traversal of a tree, construct the binary tree.
Note:
You may assume that duplicates do not exist in the tree.
For example, given

inorder = [9,3,15,20,7]
postorder = [9,15,7,20,3]
Return the following binary tree:

    3
   / \
  9  20
    /  \
   15   7

难度:medium

题目:给定二叉树中序及后序遍历,构造二叉树,注意二叉树中的结点不重复。

思路;分治。

  1. 从后序遍历数组中由后向前取结点r
  2. 在中序遍历中找到r的位置,并由此结点分成两部分,继续执行1.

Runtime: 4 ms, faster than 68.02% of Java online submissions for Construct Binary Tree from Inorder and Postorder Traversal.
Memory Usage: 37.6 MB, less than 42.45% of Java online submissions for Construct Binary Tree from Inorder and Postorder Traversal.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode buildTree(int[] inorder, int[] postorder) {
        if (null == postorder || postorder.length < 1) {
            return null;
        }
        
        return buildTree(inorder, 0, inorder.length - 1, postorder, postorder.length - 1);
    }
    
    public TreeNode buildTree(int[] inorder, int start, int end, int[] postorder, int idx) {
        if (start > end || idx < 0) {
            return null;
        }   
        
        TreeNode root = new TreeNode(postorder[idx]);
        int rIdx = start;
        for (; rIdx <= end; rIdx++) {
            if (inorder[rIdx] == postorder[idx]) {
                break;
            }
        }
        
        root.left = buildTree(inorder, start, rIdx - 1, postorder, idx - (end - rIdx) - 1);
        root.right = buildTree(inorder, rIdx + 1, end, postorder, idx - 1);
        
        return root;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106985.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python编程前景_Python前景如何,学完后可以从事方向?

    python编程前景_Python前景如何,学完后可以从事方向?前段时间浙江八年级新增了Python编程的课程,消息一出,引起了很多人的关注。连中学生都在学Python了,你还在犹豫要不要学习吗?对于想学Python,却又担心Python前景以及学完后可以从事方向的人,下面,小雷就给大家介绍一下。Python前景怎么样?目前国内外很多公司都在使用Python,例如搜索引擎Google的核心代码是Python完成的、迪士尼公司动画生成的Unix版本都内建了Pyt…

    2022年5月16日
    40
  • LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)

    LaTex 论文排版(1): Win10 下 LaTex所需软件安装 (Tex live 2018 + Tex studio)目录一、LaTex简介(1)百度百科(2)其他理解二、LaTex环境配置(LaTex排版所需要安装的软件)1Texlive安装(1)离线安装(2)在线安装2Texstudio安装(1)设置中文界面(2)添加行号参考资料一、LaTex简介论文投稿时,有的期刊要求用LaTex对论文进行排版,也有的期刊在投稿指南写接受LaTe…

    2022年6月4日
    52
  • 精选国外免费PHP空间推荐

    精选国外免费PHP空间推荐精选国外免费PHP空间推荐方法/步骤000webhost–1500M支持PHP可绑米免费虚拟主机免费提供1500M空间,100G流量,FTP、Web方式上传管理文件,支持PHP5,提供2个M

    2022年7月2日
    27
  • idea部署tomcat启动浏览器显示404(如何部署tomcat)

    之前按照网站教程https://www.cnblogs.com/cangqinglang/p/10027199.html配置IDEA之后,tomcat启动成功,但是访问页面报404错误,参考了网站各种教程也没有解决,最后同事发现是outputdirectory路径配置错误了,一定要让项目的输出路径为tomcat的webapps路径,而不能是项目路径,坑了我半天时间,找这个问题,在此贴出来…

    2022年4月11日
    82
  • Ansi,UTF8,Unicode,ASCII编码的差别

    Ansi,UTF8,Unicode,ASCII编码的差别

    2021年11月15日
    51
  • part design_PET结构

    part design_PET结构今天终于开始研究微软对于ASP.NET2.0的产品PetShop4.0了,这个产品从架构设计到编码,都有很多的想法值得去研究,而且此产品还引入了许多.net2.0的新特性。不过学习是个长期的过程,设计的思想不可能在段时间去领会,只能一个一个方面去学习和研究。今天研究了架构,遇到了不少问题,理解起来比较抽象,但还是有一点心得的。PetShop4.0采用了三层的架构,表现层、业务逻辑层和数据层。分

    2022年10月10日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号