我是 Java 的初学者,我目前正在尝试解决树章节中的练习。
一棵树由这些节点组成。
在此处输入图像描述。一个节点保存一个对应于整数的值。除了位于树根的节点之外,一个节点始终只有一个其他节点引用它。如果一个节点在右边或左边没有子节点,那么对应的引用是null。左侧子树中任何子树的值都小于其父树的值,而右侧子树中任何子树的值都大于其父树的值。树的高度在 0 到 100 000 节之间。
我正在尝试实现一个find(int v)方法,v如果节点不存在,则返回保存该值的节点,然后 find 将必须返回null。
这是我一直在做的事情,但我有点迷茫:
class Node{
Node left, right;
int value;
public Node find (int v){
Node result = null;
if (this.left != null) result = find(v);
if (this.value == v) return this;
if (result == null && this.right != null)
result = find(v);
return result;
}
public static void main (String[] args){
Node n = smallNode.find(8);
System.out.println(n);
n = LargestNode.find(0);
System.out.println(n);
}
}
Run Code Online (Sandbox Code Playgroud)
我StackoverOverflowError在这条线上得到了一个:
if (this.left != null) result = find(v);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?我找不到它为什么会出现这个异常。