Maison > Problème commun > Quelle est la structure de stockage liée d'un arbre binaire ?

Quelle est la structure de stockage liée d'un arbre binaire ?

青灯夜游
Libérer: 2022-01-25 12:04:49
original
10189 Les gens l'ont consulté

La structure de stockage liée d'un arbre binaire fait référence à l'utilisation d'une liste chaînée pour représenter un arbre binaire, c'est-à-dire à l'utilisation d'une liste chaînée pour indiquer la relation logique entre les éléments. La structure de stockage liée d'un arbre binaire a généralement deux formes de stockage : une liste chaînée binaire et une liste chaînée triplet.

Quelle est la structure de stockage liée d'un arbre binaire ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version c99, ordinateur Dell G3.

La structure de stockage liée d'un arbre binaire utilise une liste chaînée pour représenter un arbre binaire, c'est-à-dire qu'une liste chaînée est utilisée pour indiquer la relation logique entre les éléments. Il existe généralement deux formulaires de stockage :

  • Chaque nœud de la liste chaînée se compose de trois champs en plus du champ de données, il existe également deux champs de pointeur, qui sont utilisés pour donner l'enfant gauche et l'enfant droit du nœud. respectivement. L'adresse de stockage où il se trouve.

  • Chaque nœud de la liste chaînée se compose de quatre champs En plus du champ de données, il existe également trois champs de pointeur, qui sont utilisés pour donner les adresses de stockage de l'enfant gauche, de l'enfant droit et du nœud parent.

La structure de stockage chaînée d'un arbre binaire (explication détaillée en langage C)

Quelle est la structure de stockage liée dun arbre binaire ?
Figure 1 Diagramme schématique d'un arbre binaire ordinaire

Comme le montre la figure 1, il s'agit d'un arbre binaire ordinaire S'il est chaîné Pour stocker, il vous suffit de partir du nœud racine de l'arborescence et de stocker chaque nœud et ses enfants gauche et droit dans une liste chaînée. Par conséquent, la structure de stockage en chaîne correspondant à la figure 1 est représentée sur la figure 2 :

Quelle est la structure de stockage liée dun arbre binaire ?
Figure 2 Diagramme schématique de la structure de stockage en chaîne d'un arbre binaire

Comme le montre la figure 2, lorsque le stockage en chaîne d'arbres binaires est utilisé, la structure de nœuds se compose de trois parties (comme le montre la figure 3) :

  • Pointeur vers le nœud enfant gauche (Lchild) ;

  • Données stockées dans le nœud (data);

  • Pointeur vers le nœud enfant droit (Rchild);

Quelle est la structure de stockage liée dun arbre binaire ?
Figure 3 Structure de nœud d'arbre binaire

Le code en langage C représentant la structure de nœud est :

typedef struct BiTNode{
    TElemType data;//数据域
    struct BiTNode *lchild,*rchild;//左右孩子指针
    struct BiTNode *parent;
}BiTNode,*BiTree;
Copier après la connexion

Le code en langage C correspondant à la structure de stockage en chaîne dans la figure 2 est :

#include <stdio.h>
#include <stdlib.h>
#define TElemType int
typedef struct BiTNode{
    TElemType data;//数据域
    struct BiTNode *lchild,*rchild;//左右孩子指针
}BiTNode,*BiTree;
void CreateBiTree(BiTree *T){
    *T=(BiTNode*)malloc(sizeof(BiTNode));
    (*T)->data=1;
    (*T)->lchild=(BiTNode*)malloc(sizeof(BiTNode));
    (*T)->lchild->data=2;
    (*T)->rchild=(BiTNode*)malloc(sizeof(BiTNode));
    (*T)->rchild->data=3;
    (*T)->rchild->lchild=NULL;
    (*T)->rchild->rchild=NULL;
    (*T)->lchild->lchild=(BiTNode*)malloc(sizeof(BiTNode));
    (*T)->lchild->lchild->data=4;
    (*T)->lchild->rchild=NULL;
    (*T)->lchild->lchild->lchild=NULL;
    (*T)->lchild->lchild->rchild=NULL;
}
int main() {
    BiTree Tree;
    CreateBiTree(&Tree);
    printf("%d",Tree->lchild->lchild->data);
    return 0;
}
Copier après la connexion

Résultat de sortie du programme :

4
Copier après la connexion

En fait, le chaîne de l'arbre binaire Il existe beaucoup plus de structures de stockage que celle illustrée à la figure 2. Par exemple, dans certains scénarios réels, l'opération de « recherche du nœud parent d'un nœud » peut être effectuée. Dans ce cas, un champ de pointeur peut être ajouté à la structure de nœud pour que chaque nœud pointe vers son nœud parent, comme indiqué. dans la figure 4. :

Quelle est la structure de stockage liée dun arbre binaire ?
Figure 4 La structure de stockage liée d'un arbre binaire personnalisé

Une telle structure de liste chaînée est généralement appelée liste chaînée ternaire.

En utilisant la liste chaînée à trois volets présentée dans la figure 4, nous pouvons facilement trouver le nœud parent de chaque nœud. Par conséquent, lors de la résolution de problèmes pratiques, l’utilisation d’une structure de liste chaînée appropriée pour stocker les arbres binaires peut obtenir deux fois le résultat avec la moitié de l’effort.

Recommandations associées : "Tutoriel vidéo sur le langage C"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal