空指针 java 中的异常,同时在 val 树的给定范围内找不到任何值



我正在尝试在avl树中打印给定范围内的节点值。但是当我尝试运行该程序时,我得到NullPointerException。 我无法从同一主题的先前问题中获得太多帮助。我怎么能在这里纠正它。这是我对该部分的代码:

public void range(int low, int up){
    if(low >up){
        System.out.println("Illegal input");
    }
    if(this.root != null){
        System.out.println(rangeS(this.root,low,up) +"");
    }
}
public static int rangeS(AvlNode root,int k1 ,int k2){
    int c = 0;
    if(root.key >= k1 && root.key <= k2){
        c = c+1;
    }
    if(root.key > k1 ){
        rangeS(root.left,k1,k2);
    }
    if(root.key <k2){
        rangeS(root.right,k1,k2);
    }
    return c;
}

由于您以递归方式调用rangeS,因此root.left 或/和 root.right 可能会null。这将导致访问root.key时出现NPE。切赫null,并在呼叫rangeS之前返回0

public static int rangeS(AvlNode root,int k1 ,int k2){
  if(root == null) {
     return 0;
  }
  ...
}

更新:

要计算树下的顶点数,请将rangeS的结果添加到计数器c,例如 c += rangeS(...) .

最新更新