[英]Find the smallest element greater than data, or the successor (Binary Search Tree)
我有一個BST類和BSTNode類,它們都具有可比性,我需要從二進制搜索樹中找到大於數據或后繼元素的最小元素。 我知道我有兩種情況
1:右子樹為非空,則后繼者為右子樹的最左節點
2:右子樹為空,則后繼子是包含數據的節點的最低祖先,其左子節點也是給定數據的祖先。 例:
73
/ \
34 90
/ \
32 40
如果我們需要找到下一個最大的40,則將返回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;
}
這是我到目前為止的代碼。 任何幫助,將不勝感激!
只需進行基本的順序遍歷即可。 采取任何靜態變量來存儲剛剛遍歷的節點的數據。 如果它等於數據(必須找到其后繼數據),則打印當前節點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.