Java 需要递归算法来搜索所有BST

Java 需要递归算法来搜索所有BST,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,试图想出一个算法来访问BST中的每个节点,并对每个节点进行比较以找到最大的int值,我的BST是不平衡的,按字母顺序排序,但有int值,我需要在树中找到最大的int值 我的代码是: private Object Mode(BinaryTreeNode root) { if (root == null) { return null; } Object left = root.getElement(); Object right = root.get

试图想出一个算法来访问BST中的每个节点,并对每个节点进行比较以找到最大的int值,我的BST是不平衡的,按字母顺序排序,但有int值,我需要在树中找到最大的int值

我的代码是:

private Object Mode(BinaryTreeNode root) {
    if (root == null) {
        return null;
    }

    Object left = root.getElement();
    Object right = root.getElement();

    if (root.getLeftChild() != null) {

        Object leftEle = root.getLeftChild().getElement();

        if (left.data < leftEle.data) {
            left = Mode(root.getLeftChild());

        }
    }

    if (root.getRightChild() != null) {

        Object rightEle = root.getRightChild().getElement();

        if (right.data < rightEle.data) {
            right = Mode(root.getRightChild());

        }
    }

    if(left.data > right.data){
        return left;
    }

    return right;`

}
私有对象模式(二进制树节点根){
if(root==null){
返回null;
}
objectleft=root.getElement();
Object right=root.getElement();
if(root.getLeftChild()!=null){
Object leftEle=root.getLeftChild().getElement();
if(left.dataright.data){
左转;
}
返还权`
}

我知道当方法调用从堆栈中弹出时会发生比较,但我不确定是否最终检查了所有节点,因为BST没有按数据排序,所以需要遍历每个节点并在它们之间进行比较。删除那些复选框
right.data
left.data
,这将限制搜索空间。我还没有编译你的代码。应该是这样的:

private Object Mode(BinaryTreeNode root) {
    if (root == null) {
        return null;
    }

    Object left = root.getElement();
    Object right = root.getElement();

    if (root.getLeftChild() != null) {

        Object leftEle = root.getLeftChild().getElement();        
        left = Mode(root.getLeftChild());    
    }

    if (root.getRightChild() != null) {    
        Object rightEle = root.getRightChild().getElement();
        right = Mode(root.getRightChild());
    }
    if(left != null ){
        if(right != null)
            if(left.data < right.data
                return right;
        return left;

    }

    return right;


}
私有对象模式(二进制树节点根){
if(root==null){
返回null;
}
objectleft=root.getElement();
Object right=root.getElement();
if(root.getLeftChild()!=null){
Object leftEle=root.getLeftChild().getElement();
左=模式(root.getLeftChild());
}
如果(root.getRightChild()!=null){
对象rightEle=root.getRightChild().getElement();
右=模式(root.getRightChild());
}
if(左!=null){
if(右!=null)
如果(左数据<右数据
返还权;
左转;
}
返还权;
}

如果您可以放置一些(格式化)代码在您的描述中,这里的人可能会更好地帮助您解决语法问题。您的psuedo代码非常准确,并且正确地使用了递归。@MileHigh您能详细说明一下这一点吗
我的BST不平衡,按字母顺序排序,但带有int值
。整数值和d角色?