Insertion de nœuds d'arborescence de recherche binaire

Définissez d'abord un arbre binaire de recherche, le code Java s'exprime comme suit :

public class BST<Key extend Comparable<Key>, Value> {     // Les nœuds de l'arbre sont des classes privées, le monde extérieur n'a pas besoin de comprendre l'implémentation spécifique des nœuds binaires de l'arbre de recherche     private class Node {         private Key key;         private Value value ;         private Node left, right ;         public Node(Key key, Value value) {             this.key = key ;             this.value = value ;             left = right = null ;         }     }     // le nœud racine     private Node root ;     // le nombre de nœuds dans l'arbre     private int count;     // constructeur, construit un arbre de recherche binaire vide par défaut     public BST() {         root = null;         count = 0;     }     // renvoie le nombre de nœuds dans l'arbre de recherche binaire























    public int size() {         return count;     }     // Retourne si l'arbre de recherche binaire est vide     public boolean isEmpty() {         return count == 0;     } }






Node représente le nœud et count représente le nombre de nœuds.

L'exemple suivant insère l'élément 61 dans l'arborescence de recherche binaire suivante :

(1) L'élément 61 à insérer est supérieur à 42, comparer le nœud racine du sous-arbre droit de 42.

(2) 61 est plus grand que 59, donc 61 doit être déplacé vers la position correspondante du sous-arbre droit de 59, mais il est vide à ce moment, et directement inséré en tant que nœud enfant droit de 59.

L'opération d'insertion est également un processus récursif, divisé en trois cas, égal à, supérieur à et inférieur à.

Exemple de code Java

code du fichier src/runoob/binary/BinarySearchTreeInsert.java :

package runoob.binary;

/**
 * L'arbre de recherche binaire insère de nouveaux éléments
 */

public class BinarySearchTreeInsert<Key extend Comparable<Key>, Value> {     // Les nœuds de l'arbre sont des classes privées et le monde extérieur n'a pas besoin de comprendre l'arbre de recherche binaire L'implémentation spécifique du noeud     private class Node {         clé privée clé ;         valeur privée valeur ;         nœud privé gauche, droite ;         nœud public (clé clé, valeur valeur) {             this.key = clé ;             this.value = valeur ;             left = right = null;         }     }     private Node root; // Nœud racine     private int count; // Le nombre de nœuds dans le type d'arbre     // Constructeur, par défaut pour construire un arbre de recherche binaire vide     public BinarySearchTreeInsert() {



















        root = null;
        count = 0;
    }

    // Renvoie le nombre de nœuds dans l'arbre de recherche binaire
    public int size() {         return count;     }     // Renvoie si l'arbre de recherche binaire est vide     public boolean isEmpty() {         return count = = 0 ;     }     // Insère une nouvelle paire de données (clé, valeur) dans l'arbre de recherche binaire     public void insert(Key key, Value value) {         root = insert(root, key, value);     }     // Core code -- - start     // Insère un nœud (clé, valeur) dans l'arbre de recherche binaire enraciné au nœud et utilise un algorithme récursif     // pour renvoyer la racine de l'arbre de recherche binaire après l'insertion du nouveau nœud     private Node insert(Node node, Key clé, Valeur value) {         if (node ​​​​== null) {             count++;



















            renvoie un nouveau nœud (clé, valeur);
        }
        if (key.compareTo(node.key) == 0)
            node.value = value;
        sinon si (key.compareTo(node.key) < 0)
            node.left = insert(node.left, key, value);
        else // clé > nœud-> clé
            node.right = insert(node.right, key, value);

        nœud de retour ;
    }
    //核心代码---结束
}

Je suppose que tu aimes

Origine blog.csdn.net/unbelievevc/article/details/131320451
conseillé
Classement