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;
        }
  • 相关阅读:
    php解析XML的两种方法
    Windows下xampp搭配php环境以及mysql的设置和php连接Mysql数据库
    管道
    Ubuntu文件系统
    Ubuntu如何使用Vscode写C++代码
    Ubuntu如何百度云盘下载
    Debug程序的使用
    寄存器
    汇编指令
    汇编第二章_寄存器
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5503923.html
Copyright © 2011-2022 走看看