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

        /*
         * 106. Construct Binary Tree from Inorder and Postorder Traversal
         * 11.21 By Mingyang 
         * Becuase k is not the length, it it need to -(inStart+1) to get the length
         * 需要注意的就是k不能作为postorder的index,必须加上距离才行
         */
        public TreeNode buildTree2(int[] inorder, int[] postorder) {
            int inStart = 0;
            int inEnd = inorder.length - 1;
            int postStart = 0;
            int postEnd = postorder.length - 1;
            return buildTree2(inorder, inStart, inEnd, postorder, postStart,postEnd);
        }
        public TreeNode buildTree2(int[] inorder, int inStart, int inEnd,int[] postorder, int postStart, int postEnd) {
            if (inStart > inEnd || postStart > postEnd)
                return null;
            int rootValue = postorder[postEnd];
            TreeNode root = new TreeNode(rootValue);
            int k = 0;
            for (int i = 0; i < inorder.length; i++) {
                if (inorder[i] == rootValue) {
                    k = i;
                    break;
                }
            }
            root.left = buildTree2(inorder, inStart, k - 1, postorder, postStart,
                    postStart + k - (inStart + 1));
            // Becuase k is not the length, it it need to -(inStart+1) to get the length
            //k只是与inorder有关,不能拿来postorder来用,这样就不行了
            root.right = buildTree2(inorder, k + 1, inEnd, postorder, postStart + k - inStart, postEnd - 1);
            // postStart+k-inStart = postStart+k-(inStart+1) +1
            return root;
        }
  • 相关阅读:
    如何计算时间复杂度
    注意线程
    java中一个类要当作线程来使用有两种方法
    压缩和解压
    init [0123456]
    linux文件目录
    为什么使用combiner?【Hadoop】
    JAVA标识符
    关键字:java
    转 java 中int String类型转换
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5503923.html
Copyright © 2011-2022 走看看