zoukankan      html  css  js  c++  java
  • leetcode——106.从中序和后序遍历序列构造二叉树

    还可以,自己做得出来。

    public TreeNode buildTree(int[] inorder, int[] postorder) {
            //用一个map来存储中序
            int n = inorder.length;
            if(n == 0){
                return null;
            }else if(n == 1){
                return new TreeNode(inorder[0]);
            }
            Map<Integer,Integer> map = new HashMap<>();
            for(int i = 0;i<n;i++){
                map.put(inorder[i],i);
            }
            TreeNode root = new TreeNode(postorder[n-1]);
            //构建左子树
            int i = map.get(postorder[n-1]);   //找到根节点在中序遍历中的下标值
            root.left = buildTree(inorder,postorder,0,i-1,0,i-1,map);
            //构建右子树
            root.right = buildTree(inorder,postorder,i+1,n-1,i,n-2,map);
            return root;
        }
    
        private TreeNode buildTree(int[] inorder, int[] postorder, int in_start, int in_end, int post_start, int post_end,Map<Integer,Integer> map) {
            if(post_end < post_start){
                return null;
            }
            TreeNode node = new TreeNode(postorder[post_end]);
            int i = map.get(postorder[post_end]);
            node.left = buildTree(inorder, postorder, in_start, i, post_start, post_start+i-in_start-1, map);
            node.right = buildTree(inorder, postorder, i+1, in_end, post_start+i-in_start, post_end-1, map);
            return node;
        }

    ——2020.7.1

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    Spring学习,初识Spring
    Spring学习整理
    表单验证一些思考
    为什么要使用mybaits
    JDBC缺点分析
    Java 学习笔记提高篇
    Java基础学习笔记(四)
    Java基础学习笔记(三)
    Java学习笔记(二)
    centos7运行级别和图形界面相关操作
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13221243.html
Copyright © 2011-2022 走看看