Java 递归二叉树方法的空指针异常

Java null pointer exception on recursive binary tree method

这个方法给我一个空指针异常,我不知道为什么会这样。递归代码有问题吗?

 public void clearAllSelections(){
    //Recursively clear all the selections in the sub-tree of this node
    //basis:
    isSelected = false;
    if(isLeaf()) return;

    //recursion:
    childrenRight.clearAllSelections();
    childrenLeft.clearAllSelections();

}

在进行函数调用之前对 childrenRight 和 childrenLeft 进行空检查

您的 isLeaf() 检查不充分,因为二叉树中的节点可能只有一个子节点,因此您必须添加空检查:

public void clearAllSelections(){
    //Recursively clear all the selections in the sub-tree of this node
    //basis:
    isSelected = false;
    if(isLeaf()) return;

    //recursion:
    if (childrenRight != null)
        childrenRight.clearAllSelections();
    if (childrenLeft != null)
        childrenLeft.clearAllSelections();

}