• 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;
        }
  • 相关阅读:
    LA 3938 动态最大连续和 线段树
    UVA 11235 频繁出现的数值 RMQ
    LA 4329 ping-pong树状数组
    LA 3027 合作网络 并查集
    vue-url传参
    vue打开新页面的几种方式
    父子组件传参
    vue--按钮级别的权限控制+插件的使用
    小程序填坑
    webpack小试牛刀
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5503923.html
Copyright © 2020-2023  润新知