nsi:terminales:arbres:start
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:terminales:arbres:start [2022/10/14 19:27] – supprimée - modification externe (Unknown date) 127.0.0.1 | nsi:terminales:arbres:start [2023/03/18 13:01] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 194.153.110.5 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Arbres ====== | ||
| + | Il s'agit d'un structure de données **hiérarchique**. | ||
| + | |||
| + | //Par opposition aux structures linéaires que sont les tableaux, listes, piles et files// | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ===== Définitions ===== | ||
| + | |||
| + | ==== Nœud ==== | ||
| + | |||
| + | Élément constitutif de l' | ||
| + | |||
| + | * On peut parler de **descendants** pour l' | ||
| + | * On peut également parler d' | ||
| + | |||
| + | ==== Arbre ==== | ||
| + | |||
| + | Un arbre peut-être **vide**. Sinon il contient des nœuds. L'un de ces nœuds est la **racine** de l' | ||
| + | |||
| + | ==== Racine ==== | ||
| + | |||
| + | C'est un nœud sans parent. Il doit y avoir exactement une racine dans un arbre non vide. | ||
| + | |||
| + | //Dans l' | ||
| + | |||
| + | ==== Feuille ==== | ||
| + | |||
| + | C'est un nœud sans enfant. La feuille est au bout d'une branche d' | ||
| + | |||
| + | //Dans l' | ||
| + | |||
| + | ==== Profondeur d'un nœud ==== | ||
| + | |||
| + | Pour un nœud donné, c'est le nombre de liens le séparant de la racine. | ||
| + | |||
| + | Dans l' | ||
| + | * A a une profondeur de 0 ; | ||
| + | * B une profondeur de 1 ; | ||
| + | * D une profondeur de 2 | ||
| + | |||
| + | <WRAP tip>On trouve des définitions contradictoires sur internet. Certains comptent une profondeur de 1 pour la racine et d' | ||
| + | |||
| + | ==== Hauteur d'un arbre ==== | ||
| + | |||
| + | profondeur maximale dans l' | ||
| + | |||
| + | // | ||
| + | |||
| + | <WRAP tip>Là encore, on pourra trouver des définitions qui donnent à cet arbre une hauteur de 3.</ | ||
| + | |||
| + | ==== Sous arbre ==== | ||
| + | |||
| + | arbre formé en prenant un certain nœud comme racine et en ne conservant que ses descendants | ||
| + | |||
| + | Par exemple, considérons l' | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | On peut considérer le sous arbre issu de '' | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ===== Exemples d' | ||
| + | |||
| + | Les arbres sont courants en informatique et ailleurs. En mathématique on connaît les arbres de probabilités et on pense bien sûr aux arbres généalogiques. | ||
| + | |||
| + | <WRAP important> | ||
| + | |||
| + | ==== Adresse dans une rue ==== | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ==== arborescence du système de fichier ==== | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ==== dom d'une page html ==== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <code html linenums> | ||
| + | <!-- exemple.html --> | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | window.onload = function() { | ||
| + | //exécute la fonction lorsque le document est chargé | ||
| + | var heading = document.createElement(" | ||
| + | var heading_text = document.createTextNode(" | ||
| + | heading.appendChild(heading_text); | ||
| + | document.body.appendChild(heading); | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | <div> | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | <div> | ||
| + | Deuxième bloc. | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Cette page **html** a une structure hiérarchique. Remarquez l' | ||
| + | |||
| + | Le script **javascript** qui s' | ||
| + | |||
| + | ==== successions de coups possibles au échecs ==== | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ===== Arbres binaires ===== | ||
| + | |||
| + | Dans un arbre binaire, chaque nœud ne peut avoir que **0, 1 ou 2 enfants**. | ||
| + | |||
| + | Exemple : | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | On pourra alors parler d' | ||
| + | |||
| + | * L' | ||
| + | * Les sous-arbres gauche et droit de A sont : | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | ===== Arbre binaire de recherche (ABR) ===== | ||
| + | |||
| + | On définit un critère d' | ||
| + | |||
| + | Dans un ABR, pour un nœud donné, tous les nœuds du sous-arbre gauche ont une valeur inférieure et tous les nœuds du sous-arbre droit ont une valeur supérieure. | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | Par exemple, ici, les nœuds contiennent des doublets '' | ||
| + | |||
| + | ==== Recherche d'un nœud ==== | ||
| + | |||
| + | L' | ||
| + | |||
| + | **Exemple :** On cherche le numéro de '' | ||
| + | |||
| + | <WRAP important> | ||
| + | |||
| + | * On commence par la racine, '' | ||
| + | * Puisque '' | ||
| + | * On arrive à '' | ||
| + | * On arrive à '' | ||
| + | * On a trouvé le nœud de '' | ||
| + | |||
| + | ==== Insertion d'un nœud ==== | ||
| + | |||
| + | On cherche à insérer un nouvel item. | ||
| + | * On crée un nœud contenant l' | ||
| + | * on cherche l' | ||
| + | * on insère le nœud à l' | ||
| + | |||
| + | Par exemple, supposons que l'on veuille insérer '' | ||
| + | * On crée le nœud contenant le doublet, | ||
| + | * on cherche un point d' | ||
| + | * à gauche de '' | ||
| + | * à droite de '' | ||
| + | * à droite de '' | ||
| + | * à droite de '' | ||
| + | * mais '' | ||
| + | |||
| + | {{ nsi: | ||
| + | |||
| + | <WRAP tip> | ||
| + | |||
| + | ===== Définition plus générale ? ===== | ||
| + | |||
| + | Nous avons donné ici une première définition des arbres. Certains (informatique théorique, mathématique...) utilisent parfois une version plus générale : Ils disent qu'un arbre est un [[..: | ||
| + | |||
| + | Comme en mathématiques, | ||
