检查数组的第一个值和数组的最后一个非空值之间是否出现null?

时间:2014-04-09 14:59:59

标签: java arrays tree null

我正在尝试测试二进制树数组是否完整。我的想法是获取数组并检查数组[0]位置和数组的最后一个非空值的索引之间是否存在任何空值。我的问题是如何在数组中找到最后一个非null元素?

3 个答案:

答案 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];