找到大于数据的最小元素,或者继承者(二进制搜索树)

时间:2016-06-05 00:46:53

标签: java binary-search-tree

我有一个BST类和BSTNode类,两者都可以扩展。我需要找到比数据更大的最小元素,或者继承者, 来自二叉搜索树。我知道我有两个案例

1:右子树非空,然后后继是最左边的节点 正确的子树

2:右子树是空的,然后继承者是最低的祖先 包含数据的节点,其左子节点也是给定的祖先 数据。例如:

               73
               /  \
             34   90
            /  \
            32  40

如果我们需要找到40的nextLargest,你将返回73。

public T nextLargest(T data) {
      return helperNL(data, root);
}
    private T helperNL(T data, BSTNode<T> root) {  
        if (data == null) {
            throw new IllegalArgumentException("You can't look for null data");
        }
        if (root == null) {
            return null;
        }
        if (root.getRight() != null) {
                BSTNode<T> dummyNode = root.getRight();
                //getting the leftmost node
                while (dummyNode.getLeft() != null) {
                    dummyNode = dummyNode.getLeft();
                }
                return dummyNode.getData();
       }
        return null;
    }

这是我到目前为止的代码。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

只需进行基本的顺序遍历。获取任何静态变量来存储刚遍历的节点的数据。如果它等于数据(您必须找到后继者),则打印当前节点。