如何解决为什么我的BST算法问题代码错误?我正在使用与正确的解决方案相同的逻辑,但进行了一次细微的调整,并导致了错误
问题是在给定整数排序数组的情况下,使最小高度为BST。将节点设置为中间值并以递归方式将左右子数组设置为逻辑是很重要的。
正确的解决方法是:
function minHeightBst(array) {
// Write your code here.
return bstHelper(array,null,array.length - 1);
}
function bstHelper(array,bst,start,end) {
if (start > end) return;
let middleIdx = Math.floor((start + end)/2);
const newBST = new BST(array[middleIdx]);
if (bst === null) {
bst = new BST(array[middleIdx]);
} else if(array[middleIdx] >= bst.value) {
bst.right = newBST;
bst = bst.right;
} else {
bst.left = newBST;
bst = bst.left;
}
console.log(bst)
bstHelper(array,middleIdx - 1);
bstHelper(array,middleIdx + 1,end);
return bst;
}
我的解决方案如下,并始终显示错误“无法读取未定义的属性值”:
function minHeightBst(array) {
// Write your code here.
let bst = null;
bstHelper(array,array.length - 1);
return bst;
}
function bstHelper(array,end) {
if (start > end) return;
let middleIdx = Math.floor((start + end)/2);
const newBST = new BST(array[middleIdx]);
if (bst === null) {
bst = newBST;
} else if(array[middleIdx] >= bst.value) {
bst.right = newBST;
bst = bst.right;
} else {
bst.left = newBST;
bst = bst.left;
}
bstHelper(array,end);
}
如果需要查看,这是BST构造函数:
class BST {
constructor(value) {
this.value = value;
this.left = null;
this.right = null;
}
}
示例输入:
minHeightBst([1,2,5,7,10,13,14,15,22]);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。