如何在树 Java 中查找节点

use*_*817 6 java tree

我是 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)

我究竟做错了什么 ?我找不到它为什么会出现这个异常。