我有一个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;
}
这是我到目前为止的代码。任何帮助将不胜感激!
答案 0 :(得分:0)
只需进行基本的顺序遍历。获取任何静态变量来存储刚遍历的节点的数据。如果它等于数据(您必须找到后继者),则打印当前节点。