是否有可能检查我进入的对象是否存在但指向 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? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章