我正在尝试测试二进制树数组是否完整。我的想法是获取数组并检查数组[0]位置和数组的最后一个非空值的索引之间是否存在任何空值。我的问题是如何在数组中找到最后一个非null元素?
答案 0 :(得分:0)
您可以从头开始扫描,记住您找到的最后一个非null的索引。或者从最后开始向后工作;第一个非null的索引将比第一个null小1(除非它们全部为null)。
但是,既然你关心的是在非null之前是否存在null,则向前扫描直到找到null,然后继续;如果你在结束前达到非空值,那么你的BTA就不完整了。
答案 1 :(得分:0)
尝试:
boolean foundNotNull = false; // has a non-null value been found already?
for(int i = array.length - 1 ; i >= 0 ; --i) {
if(array[i] == null && foundNotNull ) {
return true; // yes there are null values
}
if(array[i] != null) {
foundNotNull = true;
}
}
答案 2 :(得分:0)
查找数组的第一个和最后一个非空值的最佳方法。
var first = myArray.filter(function(e, i, a) { return e != undefined;})[0];
var last = myArray.reverse().filter(function(e, i, a) { return e != undefined;})[0];