zoukankan      html  css  js  c++  java
  • [leedcode 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.

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
    /*    注释见上一题:已知前序和中序,求树
        关键点:
        1 定位每层的根节点
        2 计算好offset*/
        public TreeNode buildTree(int[] inorder, int[] postorder) {
            if(inorder.length!=postorder.length||inorder.length==0) return null;
            return getNode(inorder,0,inorder.length-1,postorder,0,postorder.length-1);
        }
        TreeNode getNode(int[] inorder,int left1,int right1,int[] postorder,int left2,int right2){
            if(left1>right1) return null;
            if(left2>right2) return null;
            int temp=postorder[right2];
            int index=left1;
            for(;index<=right1;index++){
                if(inorder[index]==temp)break;
            }
            int len=index-left1;
            TreeNode node=new TreeNode(temp);
            node.left=getNode(inorder,left1,index-1,postorder,left2,left2+len-1);
            node.right=getNode(inorder,index+1,right1,postorder,left2+len,right2-1);
            return node;
            
        }
    }
  • 相关阅读:
    XGBoost参数
    算法
    Python2 和Python3 的区别
    解决ubuntu上ifconfig没有eth0/ens33且无法上网的问题
    Ubuntu 忘记root user密码 关闭图形界面
    rabbitmq消息队列
    CMDB 数据加密 最终整合API验证+AES数据加密
    CMDB API验证
    使用Python生成ASCII字符画
    google 技巧
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4665706.html
Copyright © 2011-2022 走看看