是否有可能检查我进入的对象是否存在但指向 Null? [关闭]

Posted

技术标签:

【中文标题】是否有可能检查我进入的对象是否存在但指向 Null? [关闭]【英文标题】:Is there a posibility to check if the Object i am into is there but pointing at Null? [closed] 【发布时间】:2021-09-04 09:41:13 【问题描述】:

我想编写一个递归方法将二叉树按顺序放入数组中,我从大学得到的工作表告诉我,我应该在嵌套类“节点”中编写该方法,并让外部类调用它新方法中的方法。

但是递归方法必须有它的基础,我不能问是否( node == null ),因为我已经在类节点中。 并且 (this == null) 似乎也不太正确。

编辑:

我想我明白了你想说的话,我明白了,有点。 正如你所问的,我正在给你我所指的代码部分。

public class BinaryIntTree 

public static class Node 
    
    int value;
    
    Node leftChild;
    
    Node rightChild;
    
    public Node(int value) 
        this.value = value;
    
    
    /**
     * Performs an in order traversal and writes the
     * values of the tree into the array starting at
     * the specified start index. When done, the
     * method returns the updated start index that
     * is incremented by the number of values written
     * to the array.
     * 
     * @param array The array to write to.
     * @param startIndex The start index to write from.
     * @return The updated start index that is incremented
     *  by the number of values written to the array.
     */
    public int toArray(int[] array, int startIndex) 
        
    return 0;
    

public int[] toIntArray() 
    int[] result = new int[getNodeCount()];
    if (result.length != 0) 
        root.toArray(result, 0);
    
    return result;
   



我删除了其中的更多方法以指出我正在努力解决的部分。 通常我在 Binarytree 类中进行正常的中序遍历,但我们的教授现在希望我们在嵌套类中执行它,并让它在外部类中调用,就像你在这里看到的那样。

当我什至无法将 leftChild 或 rightChild 放入嵌套类中应该是递归的方法参数内时,我也无法弄清楚我应该如何深入树。 我不应该更改参数或将方法设为静态。

我希望我能描述得足够好。

【问题讨论】:

如果类方法被调用,则其对象存在。否则,当您尝试调用该方法时,您会得到一个NullPointerException 你说得对,this == null 不正确。 this 永远不能是 null。但是,您对任务的描述或您对正在考虑的解决方案的描述都不够清楚,我们无法做出回应。 (如果您向我们展示您的代码可能会有所帮助...) 顺序遍历意味着首先访问左子节点(如果有的话),然后访问当前节点,然后访问右子节点(如果有的话)。访问左子节点(如果有的话)转换为if (leftChild != null) /* try to insert the recursive call yourself */;。访问当前节点转换为array[startIndex++] = value;。访问右子节点类似于访问左子节点——我相信你现在可以解决这个问题。如您所见,调用者需要进行空值检查。 【参考方案1】:

树中的每个节点都是Node 类的不同实例。 Node 类可能有两个 Node 类型字段用于其左右子项。您希望在该左右子节点上而不是在当前节点上执行此 null 检查(因为当前节点 this 始终存在)。

【讨论】:

以上是关于是否有可能检查我进入的对象是否存在但指向 Null? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

检查 PyObject 是不是为 None

如何检查 JavaScript 中是不是存在变量?

如何检查 JavaScript 中是不是存在变量?

检查对象是否存在

如何检查对象是否包含字符串值?

Python:检查范围内是不是存在对象[重复]