zoukankan      html  css  js  c++  java
  • Leecode no.889 根据前序和后序遍历构造二叉树

    package tree;

    import java.util.Arrays;

    /**
    *
    * 889. 根据前序和后序遍历构造二叉树
    * 返回与给定的前序和后序遍历匹配的任何二叉树。
    *
    * pre 和 post 遍历中的值是不同的正整数。
    *
    * @author Tang
    * @date 2021/7/29
    */
    public class ConstructFromPrePost {

    /**
    * 思路: 对于当前节点 拆分出左子树有哪些节点,右子树有哪些节点
    * 根据 前序遍历的第二个节点是左子节点的性质 找到第二个节点在后续遍历中的位置,从而判断左子树节点个数
    * @param preorder
    * @param postorder
    * @return
    */
    public TreeNode constructFromPrePost(int[] preorder, int[] postorder) {
    if(preorder.length == 0){
    return null;
    }
    TreeNode root = new TreeNode(preorder[0]);
    if(preorder.length == 1){
    return root;
    }
    int leftCount = 0;
    for(int i = 0; i < postorder.length; i++){
    if(postorder[i] == preorder[1]){
    leftCount = i+1;
    }
    }
    //左子树递归
    root.left = constructFromPrePost(Arrays.copyOfRange(preorder, 1, leftCount+1),
    Arrays.copyOfRange(postorder, 0, leftCount));
    //右子树递归
    root.right = constructFromPrePost(Arrays.copyOfRange(preorder, leftCount+1, preorder.length),
    Arrays.copyOfRange(postorder, leftCount, postorder.length - 1));
    return root;
    }


    public static void main(String[] args) {

    }


    }
  • 相关阅读:
    Python统计nginx日志域名下载量
    如何使用MySQL自动化备份脚本添加备份任务
    迁移数据库报错
    cobbler
    Zabbix添加nginx-php监控
    Zookeeper运维问题集锦
    Jira+Wiki配置手册
    Gitlab安装恢复手册
    Glusterfs配置手册
    k8s的认证-RBAC机制
  • 原文地址:https://www.cnblogs.com/ttaall/p/15076989.html
Copyright © 2011-2022 走看看