[Java] Méthode successeur de TreeMap et complexité de l'entréeSet

Succcessor Method

As we know TreeMap is implemented by Binary Search Tree. So I am very curious about the entrySet or subMap method implementation and complexity.

It turns out java do it very straight forward. For entrySet, it start from the first node and by finding successor to move to next node.

It has a successor method to find next node by the following steps.

/**
 * Returns the successor of the specified Entry, or null if no such.
 */
static <K,V> TreeMap.Entry<K,V> successor(Entry<K,V> t) {
    if (t == null)
        return null;
    else if (t.right != null) {
        Entry<K,V> p = t.right;
        while (p.left != null)
            p = p.left;
        return p;
    } else {
        Entry<K,V> p = t.parent;
        Entry<K,V> ch = t;
        while (p != null && ch == p.right) {
            ch = p;
            p = p.parent;
        }
        return p;
    }
}

Complexity About the complexity, here has a good explain. Assume we go through a balanced BST. We can separate it as two parts.

The average steps is 2 according to the explain here.sotheaveragecomplexityofsuccessorisO(1)andthecomplexityofgoingthroughallelementswithentrySetisO(n).

Recommended Posts

[Java] Méthode successeur de TreeMap et complexité de l'entréeSet
Méthodes Java et surcharges de méthodes
[Java débutant] == opérateur et méthode equals
java (méthode)
Méthode Java
[Java] méthode
[Java] méthode
Comment passer l'examen Java Silver et comment apprendre
[Java] Comparaison des méthodes d'opération de la collection et de StringBuilder
Référence de la méthode Java8
[Java] méthode forEach
XXE et Java
référence de la méthode java8
[Java] Méthode aléatoire
[Java] méthode de fractionnement
Méthode de connexion JAVA DB
Getter et Setter (Java)
[Java] Thread et exécutable
Java Learning 2 (Apprenez la méthode de calcul)
Java vrai et faux
Mémo d'apprentissage Java (méthode)
[Java] Comparaison des chaînes de caractères et && et ||
À propos de la liaison de méthode Java
Etudier Java 8 (voir méthode)
Programmation Java (méthode de classe)
Java - Sérialisation et désérialisation
[Java] Arguments et paramètres
timedatectl et Java TimeZone
[Java] Branchement et répétition
[Java] Types de variables et types
[Java] Notes de méthode de base
java (classe et instance)
[Java] Surcharge et remplacement
[Java] Méthode de comparaison de chaînes de caractères et méthode de comparaison utilisant des expressions régulières