zoukankan      html  css  js  c++  java
  • 106. Construct Binary Tree from Inorder and Postorder Traversal

    public TreeNode buildTree(int[] inorder, int[] postorder) {
        if(inorder==null || postorder==null || inorder.length==0 || postorder.length==0)
        {
            return null;
        }
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        for(int i=0;i<inorder.length;i++)
        {
            map.put(inorder[i],i);
        }
        return helper(inorder,postorder,0,inorder.length-1, 0, postorder.length-1,map);
    }
    private TreeNode helper(int[] inorder, int[] postorder, int inL, int inR, int postL, int postR,
    HashMap<Integer, Integer> map) { if(inL>inR || postL>postR) //构造树的递归出口, return null; TreeNode root = new TreeNode(postorder[postR]); int index = map.get(root.val); root.left = helper(inorder,postorder,inL,index-1,postL,postL+index-inL-1,map); root.right = helper(inorder,postorder,index+1,inR, postL+index-inL, postR-1,map); return root; }

    做个test case 看看起始点和终止点的位置, 构造树都不包括遍历过得 

  • 相关阅读:
    单词 统计
    第九周周进度报告
    日常总结
    Docker 初识
    读书笔记
    《未来简史》有感
    自己的Java规范文档
    nginx自动部署脚本
    jdk 自动化脚本
    我Java学习时的模样(三)
  • 原文地址:https://www.cnblogs.com/apanda009/p/7270484.html
Copyright © 2011-2022 走看看