【问题标题】:inorder traversal returns only one value中序遍历只返回一个值
【发布时间】:2021-09-21 19:13:11
【问题描述】:

我已经编写了将排序数组转换为 bst 的程序,但是当我对其运行 inorder 时,它只返回一个值,

static Node insert(int[] arr, int lo, int hi){
        if(lo>hi){
            return null;
        }
        int mid = lo + (hi - lo)/2;
        root = new Node(arr[mid]);
        root.left = insert(arr, lo, mid-1);
        root.right = insert(arr, mid+1, hi);
        return root;
    }

inOrder(插入(nodes, 0, nodes.length-1)); - 仅返回 87,inorder 是常规递归函数。 数组 int[] 节点 = {12, 25, 37, 50, 62, 75, 87};

【问题讨论】:

    标签: data-structures binary-search-tree recursive-datastructures


    【解决方案1】:
    root = new Node(arr[mid]); // wrong
    

    您应该在本地范围内声明根指针。目前,您只需修改在外部范围声明的那个,并最终在结尾处返回它。

    改为:

    Node root = new Node(arr[mid]);
    

    【讨论】:

    • 得到了@Staz
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多