[Structure des données] Le concept et la structure des arbres et des arbres binaires

 

1. Concept et structure de l'arborescence

1.1 Le concept d'arbre

Un arbre est une structure de données non linéaire, qui est un ensemble de relations hiérarchiques composé de n (n>=0) nœuds finis. On l'appelle un arbre parce qu'il ressemble à un arbre à l'envers, ce qui signifie qu'il a les racines pointant vers le haut et les feuilles pointant vers le bas.

  • Il existe un nœud spécial appelé le nœud racine , et le nœud racine n'a pas de nœuds prédécesseurs.
  • A l'exception du nœud racine, les autres nœuds sont divisés en M (M>0) ensembles disjoints T1, T2, ..., Tm , dont chacun Ti (1<= i <= m) est une structure et des sous-arbres arborescents . Le nœud racine de chaque sous-arborescence a un et un seul prédécesseur, et peut avoir zéro ou plusieurs successeurs.
  • Par conséquent, l'arbre est défini de manière récursive .

 Remarque : Dans l'arborescence, il ne peut y avoir d'intersection entre les sous-arbres, sinon ce n'est pas une arborescence

1.2 Concepts connexes d'arbres

Degré de nœud : Le nombre de sous-arbres contenus dans un nœud est appelé le degré du nœud ; comme le montre la figure ci-dessus : A est 6

Nœud feuille ou nœud terminal : un nœud de degré 0 est appelé nœud feuille ; comme le montre la figure ci-dessus : les nœuds tels que B, C, H, I... sont des nœuds feuille

Nœuds non terminaux ou nœuds de branche : nœuds dont le degré n'est pas 0 ; comme le montre la figure ci-dessus : les nœuds tels que D, E, F, G... sont des nœuds de branche

Nœud parent ou nœud parent : si un nœud contient des nœuds enfants, ce nœud est appelé le nœud parent de ses nœuds enfants ; comme indiqué ci-dessus : A est le nœud parent de B

Nœud enfant ou nœud enfant : le nœud racine du sous-arbre contenu dans un nœud est appelé le nœud enfant du nœud ; comme indiqué ci-dessus : B est le nœud enfant de A

Nœuds frères : les nœuds ayant le même nœud parent sont appelés nœuds frères ; comme illustré dans la figure ci-dessus : B et C sont des nœuds frères

Degré de l'arbre : dans un arbre, le degré du plus grand nœud est appelé le degré de l'arbre ; comme indiqué ci-dessus : le degré de l'arbre est 6

Le niveau des nœuds : à partir de la définition de la racine, la racine est le premier niveau, les nœuds enfants de la racine sont le deuxième niveau, et ainsi de suite ;

Hauteur ou profondeur de l'arborescence : le niveau maximum de nœuds dans l'arborescence ; comme indiqué ci-dessus : la hauteur de l'arborescence est de 4

Nœuds cousins : les nœuds dont les parents sont sur la même couche sont des cousins ; comme le montre la figure ci-dessus : H et I sont des nœuds frères

Ancêtres d'un nœud : tous les nœuds sur la branche de la racine au nœud ; comme le montre la figure ci-dessus : A est l'ancêtre de tous les nœuds

Descendants : tout nœud du sous-arbre enraciné à un nœud est appelé un descendant du nœud. Comme indiqué ci-dessus : tous les nœuds sont des descendants de A

Forêt : Une collection de m (m>0) arbres disjoints est appelée une forêt ;

1.3 Représentation arborescente

La structure arborescente est plus compliquée que la table linéaire, et elle est plus difficile à stocker et à exprimer. Puisque la plage de valeurs est enregistrée, la relation entre les nœuds et les nœuds est également enregistrée. En pratique, il existe de nombreuses façons de représenter les arbres, telles que comme : représentation parent , représentation enfant, représentation parent enfant et représentation enfant frère. Ici, nous comprenons simplement la notation de frère enfant la plus couramment utilisée.

La représentation enfant-frère d'un arbre, également connue sous le nom de représentation gauche-enfant-droite-frère, est une méthode de représentation des structures arborescentes. Dans cette notation, chaque nœud contient deux pointeurs : un vers son premier enfant et un vers son prochain frère .

typedef int DataType;
struct Node
{
    struct Node* _firstChild1;  // 第一个孩子结点
    struct Node* _pNextBrother;  // 指向其下一个兄弟结点
    DataType _data;  // 结点中的数据域
};

 

1.4 L'utilisation des arborescences en pratique (représentant l'arborescence des répertoires du système de fichiers)

 

2. Concept et structure de l'arbre binaire

2.1 Conception

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

1. ou vide

2. Il se compose d'un nœud racine et de deux arbres binaires appelés sous-arbre gauche et sous-arbre droit

 Comme on peut le voir sur la figure ci-dessus :

1. Il n'y a pas de nœud de degré supérieur à 2 dans l'arbre binaire

2. Les sous-arbres de l'arbre binaire sont divisés en gauche et à droite, et l'ordre ne peut pas être inversé, donc l'arbre binaire est un arbre ordonné

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

 

2.2 Arbres binaires spéciaux

1. Arbre binaire complet : un arbre binaire, si le nombre de nœuds dans chaque couche atteint la valeur maximale, alors cet arbre binaire est un arbre binaire complet . Autrement dit, si le nombre de couches d'un arbre binaire est K et le nombre total de nœuds est, alors c'est un arbre binaire complet.

2. Arbre binaire complet : Un arbre binaire complet est une structure de données très efficace, et un arbre binaire complet est dérivé d'un arbre binaire complet. Pour un arbre binaire avec une profondeur de K et n nœuds, on l'appelle un arbre binaire complet si et seulement si chaque nœud a une correspondance univoque avec les nœuds numérotés de 1 à n dans l'arbre binaire complet avec une profondeur de K Il convient de noter qu'un arbre binaire complet est un type particulier d'arbre binaire complet.

 

2.3 Propriétés des arbres binaires

 

1. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( )
A 不存在这样的二叉树
B 200
C 198
D 199

 Analyse : Un nœud feuille est un nœud de degré 0, selon la propriété 3 ci-dessus :

 Donc le nœud feuille=199+1=200 ;

Réponse : B

2.在具有 2n 个结点的完全二叉树中,叶子结点个数为( )
A n
B n+1
C n-1
D n/2

Analyse :

Réponse : B

3.一棵完全二叉树的节点数位为531个,那么这棵树的高度为( )
A 11
B 10
C 8
D 12

 Analyse :

 Réponse : B

4.一个具有767个节点的完全二叉树,其叶子节点个数为()
A 383
B 384
C 385
D 386

 Analyse : 

  Réponse : B

2.4 Structure de stockage de l'arbre binaire

Les arbres binaires peuvent généralement être stockés en utilisant deux structures, une structure séquentielle et une structure en chaîne.

1. Stockage séquentiel

Le stockage de structure séquentielle consiste à utiliser des tableaux pour le stockage En général, les tableaux ne conviennent que pour représenter des arbres binaires complets, car des arbres binaires non complets gaspilleront de l'espace. En réalité, seul le tas utilisera des tableaux pour le stockage. Le stockage séquentiel d'arbre binaire est physiquement un nombre et logiquement un arbre binaire.

 2. Stockage de la chaîne

La structure de stockage liée de l'arbre binaire signifie : une liste chaînée est utilisée pour représenter un arbre binaire, c'est-à-dire qu'un lien est utilisé pour indiquer la relation logique des éléments. La méthode habituelle est que chaque nœud de la liste chaînée est composé de trois champs, le champ de données et les champs de pointeur gauche et droit, et les pointeurs gauche et droit sont utilisés pour donner les adresses de stockage des points de lien où l'enfant gauche et l'enfant droit du nœud sont localisés. La structure de la chaîne est ensuite divisée en chaînes binaires et chaînes triples.À l'heure actuelle, nous étudions généralement les chaînes binaires, et les structures de données de haut niveau telles que les arbres rouge-noir utiliseront des chaînes triples.

 

 

Je suppose que tu aimes

Origine blog.csdn.net/m0_73648729/article/details/132259164
conseillé
Classement