java - 根据中序和后序创建一棵树

标签 java algorithm

只是为了好玩,我正在尝试创建 at tree out of inorder 和 postorder,我知道网上有很多解决方案,但我是自己做的,感觉我很接近,这是我的代码:

根据当前输入,我期望树

     7
   5    10
4   6  8  11

但我得到的是

    7
   5    10
4   6  11  11

public static TreeNode buildTreeHelper(int[] inorder, int[] postorder, int inOrderIndex, int end){
        if(end<0 || inOrderIndex<0){
            return null;
        }
        TreeNode root = new TreeNode(postorder[end]);
        int index = search(inorder,inOrderIndex,end,root.val);
        if(index!=-1){
            root.left = buildTreeHelper(inorder, postorder,inOrderIndex,index-1);
            root.right= buildTreeHelper(inorder, postorder,index+1,end-1);
        }
        return root;
    }

    public  static int search(int[]inorder, int start, int end, int target){
        for(int i=start; i<=end; i++){
            if(inorder[i]==target){
                return i;
            }
        }
        return -1;
    }    
    public static void main(String[] args){
        int[] inorder = {4, 5, 6, 7, 8, 10, 11};
        int[] postorder = {4, 6, 5, 8, 11, 10, 7};
        TreeNode ret = buildTreeHelper(inorder, postorder, 0, inorder.length-1);

    }

最佳答案

在我看来,您的 inOrderIndexend 参数可以变成 inOrderIndex > end。所以我会检查这个逻辑。我会调试以查看您在哪个点上缺少值 8 并改用 10

关于java - 根据中序和后序创建一棵树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22797861/

相关文章:

java - 使用 Spring CrudRepository 的 Hibernate LazyInitializationException

java - 为什么我在简单的 java 程序中遇到 ClassCastException?

java - 相机只能开一次?

algorithm - 如何用未知的加密算法解密字符串?

algorithm - 需要基于图 block 的编辑器的算法

algorithm - 将列表复制到 HashSet 的算法的空间复杂度

在循环内使用子字符串函数时出现 Java.lang.OutOfMemory 错误

java - Mongo Java驱动程序: How to create cursor in MongoDB by Cusor id returned by a db. runCommand

java - 为什么 Thread 类不是最终的?你为什么要扩展一个线程?

java - 使用 DFS 和 java 寻路