TL;DR

  • Le Problème: Maîtriser le problème CTCI 10.10 avec une efficacité de niveau production.
  • L'Approche: Problème CTCI 10.10 en Java: arbre binaire de recherche avec suivi du sous-arbre gauche pour calculer le rang.
  • Complexité: Compromis optimal entre temps et espace.

Cet article propose une explication claire et accessible du problème CTCI 10.10. Nous examinons l'énoncé, comparons l'approche brute à la solution optimale en Java.


1. Analogie du monde réel

Pensez au problème CTCI 10.10 comme à l'organisation efficace d'objets au quotidien. Choisir la bonne structure de données élimine les itérations inutiles.


2. Énoncé clair du problème

Problème 10.10: Problème CTCI 10.10 en Java: arbre binaire de recherche avec suivi du sous-arbre gauche pour calculer le rang.


3. Approche optimale et implémentation

public class RankNode {
    public int leftSize = 0;
    public RankNode left, right;
    public int data = 0;

    public RankNode(int d) { this.data = d; }

    public void insert(int d) {
        if (d <= data) {
            if (left != null) left.insert(d);
            else left = new RankNode(d);
            leftSize++;
        } else {
            if (right != null) right.insert(d);
            else right = new RankNode(d);
        }
    }

    public int getRank(int d) {
        if (d == data) return leftSize;
        else if (d < data) {
            if (left == null) return -1;
            return left.getRank(d);
        } else {
            int rightRank = (right == null) ? -1 : right.getRank(d);
            if (rightRank == -1) return -1;
            return leftSize + 1 + rightRank;
        }
    }
}

4. Complexité Temporelle et Spatiale

Métrique Complexité Explication
Complexité Temporelle O(N) / O(log N) Parcours optimal des données
Complexité Spatiale O(1) / O(N) Empreinte mémoire contrôlée

5. Cas Limites et Résumé

Vérifiez toujours les conditions aux limites, les valeurs nulles et la taille des tableaux en entretien.