• 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) {

    }


    }
  • 相关阅读:
    工具类---xlsx文件读写
    2021上半年第二次作业总结
    2021上半年第一次作业总结
    C语言II博客作业04
    C语言II—作业03
    C语言II博客作业02
    C语言II博客作业01
    win7开启snmp服务实现监控过程展现
    台湾某医学会sql注入漏洞
    测试面试题(持续总结中)
  • 原文地址:https://www.cnblogs.com/ttaall/p/15076989.html
Copyright © 2020-2023  润新知