将二进制树存储到数组中

时间:2017-11-05 18:48:17

标签: java arrays binary-tree binary-search-tree

我尝试使用以下代码将二叉树存储到数组中:

public void inorderArray(int[] array)  {
       inorderArray(root, array, 0);
}

private static Integer inorderArray(TreeNode root, int[] array, int index) { 
    // an inorder traversal that stores the items in array
    if(root == null){return index;}

    inorderArray(root.left, array, index);
    array[index++] = root.key;
    inorderArray(root.right, array, index);

    return index;
}

我一直在[94, 95, 0, 0, 0, 0, 0, 0, 0, 0], 它也不合适。

我不知道我做错了什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您没有使用返回值。而且你需要使用它,因为index++中的修改永远不会离开函数的范围。

private static int inorderArray(TreeNode root, int[] array, int index) {
    if (root == null) {
        return index;
    }

    index = inorderArray(root.left, array, index);
    array[index++] = root.key;
    index = inorderArray(root.right, array, index);
    return index;
}