【发布时间】:2018-01-04 10:13:07
【问题描述】:
这是我实验室的一个问题,我很难过。我们基本上得到了一个已经排序的数组,我们必须使用这个数组来创建一个列表格式的 BST。 (这看起来如何)?这是我到目前为止的代码,但它根本不起作用,我不知道如何修复它:
private static void buildBalancedRec(Integer [] tempArr, int start, int end,
BinarySearchTreeList<Integer> bstList)
{
if (bstList.size()<tempArr.length){
Integer middle = tempArr[(start+end)/2];
bstList.add(middle);
buildBalancedRec(tempArr, start , middle-1 , bstList);
buildBalancedRec(tempArr, middle+1, end, bstList);
}
假设我们得到的数组是 {1,2,3,4,5,6,7}。开始是 1,结束是 7。我假设 BST 列表应该看起来像:{4, 2, 6, 1, 3, 5, 7},对吗? BST 看起来像:
4
/ \
2 6
/\ /\
1 3 5 7
所以我假设列表会是什么样子。
我怎么去那里?我可以像在当前代码中那样有两行背靠背的递归吗?
我尝试了很多方法,但始终无法打印 {4, 2, 6, 1, 3, 5, 7}。
任何指导将不胜感激!
注意:该方法需要使用递归
【问题讨论】:
-
我看到一个错误:
Integer middle = tempArr[(start+end)/2]; bstList.add(middle);当它必须是Integer middle = (start+end)/2; bstList.add(tempArr[middle]); -
我用你的建议替换了错误,但是最终结果还是一样
标签: java sorting recursion binary-search-tree