Structure de données : concept d'arbre binaire (algorithme de base)

Table des matières

1. Fondation de la théorie des graphes de l'arbre dirigé

1. Concepts de base liés aux arbres dirigés

La définition de base d'un arbre orienté :

Degrés de nœuds dans un arbre orienté :

Degré d'un arbre orienté :

Le nœud racine, le nœud de branche et le nœud feuille de l'arborescence dirigée : 

Sous-arbres de l'arbre :

Hiérarchie des nœuds de l'arbre :

Hauteur de l'arbre :

2. Une conclusion mathématique de base

3. Arbre dirigé ordonné

2. La structure de stockage séquentielle et la structure de stockage en chaîne de l'arborescence dans la structure de données

1. Structure physique et structure logique de la structure de données

2. La structure physique est une structure de données arborescente de table de séquence (tableau)

3. La structure physique est une structure de données arborescente d'une liste chaînée

3. Arbre binaire

1. Concept de base de l'arbre binaire 

2. Deux arbres binaires spéciaux importants

3. Quelques conclusions mathématiques courantes sur les arbres binaires

(1) La première série de conclusions 

(2) Le deuxième ensemble de conclusions (base de l'algorithme pour réaliser l'arbre binaire par tableau)


1. Fondation de la théorie des graphes de l'arbre dirigé

Lemme fondamental : S'il n'y a pas de cycles dans un graphe connexe simple non orienté G (nombre de nœuds supérieur ou égal à 2), alors il y a au moins deux nœuds de degré 1 . 

Les arbres dont il est question dans cet article sont des arbres dirigés 

1. Concepts de base liés aux arbres dirigés

  • La définition de base d'un arbre orienté :

Supposons que T soit un graphe connexe simple dirigé composé de nœuds finis et qu'il n'y ait pas de boucle dans le graphe de base non dirigé de T , alors T est appelé un arbre dirigé :

  • Degrés de nœuds dans un arbre orienté :

 Le degré d'entrée du nœud : le nœud d'arbre existant A, le nombre d'arêtes dirigées se terminant en A est appelé le degré d'entrée du nœud A :

Degré extérieur du nœud : Nœud A de l'arbre existant, le nombre d'arêtes orientées partant de A est appelé degré extérieur du nœud A :

Le nœud à l'autre extrémité du bord dirigé se terminant au nœud A est appelé le nœud parent de A.

Le nœud à l'autre extrémité de l' arête dirigée à partir du nœud A est appelé le nœud enfant de A.

  •  Degré d'un arbre orienté :

Le degré d'un arbre orienté = la valeur maximale des degrés sortants de tous les nœuds de l'arbre :

  • Le nœud racine, le nœud de branche et le nœud feuille de l'arborescence dirigée : 

  1. Le degré d'entrée du nœud racine est 0
  2. Le degré de sortie d'un nœud feuille est 0
  3. Les autres nœuds dont le degré d'entrée et le degré de sortie ne sont pas 0 sont appelés nœuds de branche  de l'arbre 
  •  Sous-arbres de l'arbre :

Supprimez le nœud racine d'un arbre dirigé T , et l'arbre sera divisé en plusieurs sous-arbres déconnectés , comme indiqué sur la figure :

Les sous-arbres t1, t2 et t3 de T dans la figure ci-dessus peuvent être divisés en sous-arbres plus petits de la même manière jusqu'à ce que le graphe arborescent soit divisé en plusieurs feuilles.

Remarque : Dans une structure arborescente avec un seul nœud racine , il n'y a pas de chemin entre les sous-arbres ( sinon il y aura des boucles dans le graphe )

  • Hiérarchie des nœuds de l'arbre :

En comptant à partir du nœud racine , traversant le long du bord dirigé , le nombre de nœuds traversés du nœud racine à un nœud spécifique est appelé le niveau d'un nœud spécifique.

  1.  Les nœuds avec le même niveau et le même nœud parent sont des nœuds frères (tels que E et F dans la figure ci-dessus)
  2.  Les nœuds avec le même niveau mais des nœuds parents différents sont des nœuds cousins ​​(tels que F et G dans la figure ci-dessus)
  • Hauteur de l'arbre :

La valeur maximale dans la hiérarchie de tous les nœuds de l'arbre est appelée la hauteur de l'arbre : par exemple, la hauteur de l'arbre dans la figure ci-dessus est de 4

2. Une conclusion mathématique de base

  • Une proposition de base sur les arbres : si l'arbre a n nœuds et m arêtes orientées, alors m=n-1 ;

Cette propriété peut être démontrée par induction mathématique :

  1. Evidemment quand n=1, alors m=0, m=n-1 est établi ;
  2. Supposons que la proposition soit vraie lorsque n=k(k>=1), c'est-à-dire que tout arbre avec k nœuds a k-1 arêtes .
  3. Lorsque l'arbre G a n=k+1 nœuds (k>=1) , le nombre d'arêtes est m . Puisqu'il n'y a pas de boucle dans G , selon le lemme de base G , il doit y avoir un nœud de degré (out-degree + in-degree) de 1 , soit u. Supprimer le nœud u de G ( équivalent à supprimer une arête et un nœud en même temps ) , selon la définition G est toujours un arbre, ( selon l'hypothèse 2 quand n=k ) G a k nœuds, donc il y a k - 1 arête, donc m=(k-1)+1=k=n-1 ( ajoutez le nœud u, et le nombre d'arêtes augmente de 1 en conséquence ). (C'est-à-dire que si la proposition est vraie lorsque n = k, alors la proposition est également vraie lorsque n = k + 1, alors la construction d'un arbre avec n'importe quel nombre de nœuds à partir de n = 1 satisfait également m = n-1)

Le processus de preuve reflète pleinement le fait que l'arbre est logiquement construit de manière récursive :

Le schéma de construction de l'arbre d'analyse montre que :

  • Si un arbre dirigé avec un seul nœud racine est construit , le nœud racine de chaque sous-arbre de l'arbre dirigé a un et un seul nœud parent , et peut avoir 0 ou plusieurs nœuds enfants.
  • En même temps, il est facile de savoir que dans une structure arborescente avec un seul nœud racine , il n'y a pas de chemin entre les sous-arbres d'un arbre

3. Arbre dirigé ordonné

Le concept d'arbre complet :

  • Supposons (nœud racine unique) que la hauteur de l'arbre T est h (h>1), le degré est k (k>=1) (le nombre de nœuds dans l'arbre est supérieur à 1 )
  • Le concept d' arbre complet correspond à l'arbre T : un arbre avec une hauteur de h et le degré extérieur du nœud racine et de chaque nœud de branche est k .

Arbre dirigé ordonné :

  • Chaque nœud d'un arbre orienté ordonné a son propre nombre fixe
  • L'arbre dont nous discutons dans la structure de données est généralement un arbre dirigé ordonné avec un seul nœud racine

 Les règles de numérotation de chaque nœud de l'arbre orienté ordonné :

  1. Supposons maintenant qu'il existe un arbre T (d'un seul nœud racine) de hauteur h et de degré k (h>1,, k>=1)
  2. Faire d'abord un arbre complet correspondant à l'arbre T
  3. Numéroter les nœuds de l'arbre complet correspondant à l'arbre T dans l'ordre de bas en haut et de gauche à droite
  4. Numérotez les nœuds aux positions correspondantes de l'arbre T en fonction du numéro de chaque nœud dans l'arbre complet

Par exemple:

2. La structure de stockage séquentielle et la structure de stockage en chaîne de l'arborescence dans la structure de données

Si les nœuds de l'arbre sont considérés comme des blocs de mémoire , les segments de ligne dirigés entre les nœuds sont considérés comme l'association entre les blocs de mémoire (cette association peut être établie par une relation de pointeur ou d'indice de tableau

1. Structure physique et structure logique de la structure de données

  • La structure physique d'une structure de données fait référence au modèle de distribution réel de la structure de données en mémoire
  • La structure logique de la structure de données fait référence au modèle d'analyse abstrait de la structure de données

Le type de structure de données dépend principalement de sa structure logique , et la relation entre sa structure logique et sa structure physique est établie par mappage logique .

2. La structure physique est une structure de données arborescente de table de séquence (tableau)

  • L'arbre dont nous discutons dans la structure de données est généralement un arbre dirigé ordonné avec un seul nœud racine
  • Il existe un arbre non plein T de degré 2
  • On numérote d'abord chaque nœud de l'arbre complet correspondant à un arbre T dans l'ordre du niveau bas au niveau haut , et de gauche à droite :
  •  A partir de là, nous pouvons obtenir le numéro de chaque nœud de l'arbre T :
  • Selon le numéro de chaque nœud de l'arbre T, on peut faire correspondre cet arbre à un tableau :
  • Grâce au mappage absolu des numéros de nœud et des indices de tableau , nous pouvons implémenter des structures de données arborescentes (arbres dirigés ordonnés) via des tableaux. 
  • Dans l'arborescence implémentée par la table de séquence, un exemple très classique est le tas (taille racine tas)

3. La structure physique est une structure de données arborescente d'une liste chaînée

Nous pouvons définir un type de structure :

typedef int DataType;
struct Node
{
    struct Node* _firstChild1;  // 第一个孩子结点
    struct Node* _pNextBrother; // 指向其下一个兄弟结点
    DataType _data;             // 结点中的数据域
};
  • _firstChild1 est utilisé pour pointer vers le premier nœud enfant du nœud ( le premier au sens du nombre ( à gauche ))
  • _pNextBrother est utilisé pour pointer vers le nœud frère qui est au même niveau que le nœud et a le même nœud parent

Il y a maintenant un arbre :

Nous l'implémentons avec une structure de stockage chaînée :

Grâce au pointeur _firstChild1, nous pouvons réaliser la traversée en profondeur de l'arbre

Grâce au pointeur _pNextBrother, nous pouvons atteindre la largeur de parcours de l'arbre

3. Arbre binaire

1. Concept de base de l'arbre binaire 

Un arbre binaire est un ensemble fini de nœuds :

  1. Le degré d' un arbre binaire est 2, c'est-à-dire qu'il n'y a pas de nœud avec un degré supérieur à 2
  2. Les nœuds enfants d'un nœud d'arbre binaire sont divisés en enfants gauche et droit (enfants gauche et droit) , et l'ordre ne peut pas être inversé. Un arbre binaire est un arbre orienté ordonné ( chaque nœud a son propre nombre fixe correspondant )
  3. Dans la structure de données, nous parlons d' un arbre binaire à un seul nœud

Pour tout arbre binaire, il est composé des situations suivantes

2. Deux arbres binaires spéciaux importants

  • Arbre binaire complet : Un arbre binaire, si le degré extérieur du nœud racine et de chaque nœud de branche est 2 , alors l'arbre binaire est un arbre binaire complet. Analyse du point de vue du nombre total de nœuds : Si le nombre de couches d'un arbre binaire est K et le nombre total de nœuds est 2^k - 1 ( sommation de séquences géométriques ) , alors c'est un arbre binaire complet.
  • Arbre binaire complet : Un arbre binaire complet est une structure de données très efficace ;
    pour un arbre binaire de hauteur K et n nœuds, on l'appelle un arbre binaire complet si et seulement si tous ses nœuds sont numérotés de 1 à n dans un disposition continue . ( Selon les caractéristiques de numérotation des nœuds d'un arbre binaire complet, l'utilisation d'un tableau pour réaliser un arbre binaire complet a un taux d'utilisation de la mémoire élevé )

Un arbre binaire complet a une caractéristique :

Si la hauteur d'un arbre binaire complet est k (k>1), alors la sous-structure composée de tous les nœuds des k-1 premières couches est un arbre complet

  • Comparaison arbre binaire complet et arbre binaire non complet  avec tableau : on peut voir les avantages de l'arbre binaire complet
  •  Le tas de structure de données est un arbre binaire complet implémenté avec une table de séquence (tableau) (le tas est la base structurelle de l'algorithme de tri de tas)

3. Quelques conclusions mathématiques courantes sur les arbres binaires

Ensuite, nous donnons deux ensembles de conclusions mathématiques sur les arbres binaires qui seront utilisés dans l'apprentissage ultérieur des algorithmes

(1) La première série de conclusions 

  • Pour tout arbre binaire, si le degré sortant est 0, le nombre de nœuds feuilles est N0 , et le nombre de nœuds de branche avec le degré sortant 2 est N2 (y compris la racine) , alors N0=N2+1

prouver:

Supposons que le nombre de nœuds de branche avec un degré de sortie de 1 dans l'arbre binaire est N1 ;

Alors le nombre total d'arêtes dans l'arbre binaire est : 2*N2 + N1 ;

Le nombre de points de synthèse dans l' arbre binaire est : N0 + N1 + N2

D'après les conclusions mathématiques de base de la section 2 du chapitre 1 : 2*N2 + N1 = N0 + N1 + N2 -1 (le nombre total d'arêtes de l'arbre = le nombre de nœuds -1 )

La simplification peut être obtenue : N0 = N2 +1 ; ( c'est-à-dire que dans un arbre binaire, une feuille avec un degré de sortie de 0 est toujours un de plus qu'un nœud de branche ( y compris la racine ) avec un degré de sortie de 2 )

(2) Le deuxième ensemble de conclusions (base de l'algorithme pour réaliser l'arbre binaire par tableau)

  • Théorème 1 : Pour un arbre binaire complet à n nœuds , numéroter ses nœuds selon les règles de numérotation décrites dans la section 3 du chapitre 1 , alors les conclusions suivantes sont tirées pour le nœud enfant numéroté : si enfant>0, le numéro du nœud parent du nœud enfant numéroté parent = (enfant-1)/2 ; si enfant=0, le nœud n'a pas de nœud parent ;
  •  

Diagramme de preuve du théorème 1 :

  • Théorème 2 : Pour un arbre binaire complet à n nœuds , chaque nœud est numéroté selon les règles de numérotation décrites dans la section 3 du chapitre 1 (le nœud racine est numéroté 0, puis chaque nœud de l'arbre binaire complet Le nombre est 0~n -1) , alors les conclusions suivantes peuvent être tirées pour le nœud numéroté parent : si 2*parent+1<n , alors le numéro de nœud enfant gauche enfant gauche du nœud peut être obtenu = 2*parent+1 ; Si 2*parent +1>=n , alors le nœud n'a pas d'enfant gauche ( cette conclusion est l'inverse du théorème 1 )
  • Théorème 3 : Pour un arbre binaire complet à n nœuds , chaque nœud est numéroté selon les règles de numérotation décrites dans la section 3 du chapitre 1 (le nœud racine est numéroté 0, puis chaque nœud de l'arbre binaire complet Le nombre est 0~n -1) , alors les conclusions suivantes peuvent être tirées pour le nœud numéroté parent : si 2*parent+2<n , alors le numéro de nœud enfant droit rightchild du nœud peut être obtenu 2*parent+2 ; Si 2*parent +2>=n , le nœud n'a pas d'enfant droit ( cette conclusion est l'inverse du théorème 1 )

Le diagramme d'analyse de preuve des théorèmes 2 et 3 :

Avec cet ensemble de théorèmes, nous pouvons trouver le nombre de ses nœuds enfants gauche et droit à travers le numéro d'un nœud parent , et à son tour, nous pouvons trouver le numéro de son nœud parent à travers le numéro d'un nœud enfant ( cet ensemble de théorèmes jette les bases de la réalisation de tas par des tableaux. Base de l'algorithme )

  • Cet ensemble de théorèmes sera utilisé dans l'algorithme d'ajustement des éléments d'interface d'insertion et de suppression d'éléments de tas dans les implémentations de tas ultérieures.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_73470348/article/details/129196657
conseillé
Classement