我正在尝试修改此节点库以添加额外的存在方法
这是图书馆的链接 - https://github.com/mikolalysenko/interval-tree-1d/blob/master/interval-tree.js
这就是我创建的
proto.queryPointExists = function(x, cb) {
if(x < this.mid) {
if(this.left) {
var r = this.left.queryPointExists(x, cb)
if(r) { return r }
}
return reportLeftRangeExists(this.leftPoints, x, cb)
} else if(x > this.mid) {
if(this.right) {
var r = this.right.queryPointExists(x, cb)
if(r) { return r }
}
//console.log(reportRightRangeExists(this.rightPoints, x, cb));
return reportRightRangeExists(this.rightPoints, x, cb)
} else {
return reportRangeExists(this.leftPoints, cb)
}
}
function reportLeftRangeExists(arr, hi, cb) {
for(var i=0; i<arr.length && arr[i][0] <= hi; ++i) {
var r = cb(arr[i])
if(r) { return r }
}
}
function reportRightRangeExists(arr, lo, cb) {
for(var i=arr.length-1; i>=0 ; --i) {
if(arr[i][1] >= lo){
var r = cb(arr[i])
if(r) { return r }
} else {
return false;
}
}
}
function reportRangeExists(arr, cb) {
for(var i=0; i<arr.length; ++i) {
var r = cb(arr[i])
if(r) { return r }
}
}
tproto.queryPointExists = function(p, cb) {
console.log("Here");
if(this.root) {
//console.log(this.root.queryPointExists(p, cb)+"ss");
return this.root.queryPointExists(p, cb);
}
}
问题是回调风很紧,我想要实现的是,如果任何间隔与查询点匹配,它应该返回true并立即退出。但是由于疯狂的递归回调,我被困住了,它永远不会达到顶峰。
请帮忙