簡體   English   中英

查找大於數據的最小元素或后繼元素(二進制搜索樹)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM