当前位置:网站首页>Création d'un arbre binaire enchaîné avec trois versions ergodiques · C

Création d'un arbre binaire enchaîné avec trois versions ergodiques · C

2021-11-25 17:35:38 Numéro d'étudiant dur C + +

La plupart des gens qui croient que la plupart des math ématiques de la liste liée n'ont aucune difficulté à initialiser et détruire l'arbre binaire de la chaîne,Nous devrions donc accorder plus d'attention à certaines caractéristiques de l'arbre binaire et à ses trois traversées,En apprenant les arbres binaires, nous pouvons bien pratiquer l'utilisation récursive.

Vous pouvez d'abord examiner les caractéristiques de base et de structure de l'arbre binaire

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int BTDataType;

typedef struct BinaryTreeNode
{
	BTDataType _data;
	struct BinaryTreeNode* _left;
	struct BinaryTreeNode* _right;
}BTNode;

  1.Le deuxième arbre binaireiIl y a au plus2i-1Noeuds
  2.La profondeur estKIl y a au plus2k-1Noeuds
  3.Le degré dans n'importe quel arbre binaire est2Le nombre de noeuds doit être0Le nombre de noeuds est faible1.
   Description:Degrés0,Pour les noeuds de feuilles.
  4.AvecnLa profondeur de l'arbre binaire complet des noeuds estLog2N+1
  5.Si un noeud dans un arbre binaire complet est numérotéi,S'il y a des enfants de gauche numérotés2i,S'il y a des enfants de droite numérotés2i+1,              Le noeud parent esti/2.

Nous rencontrons souvent des problèmes comme celui - ci, donc je vous recommande ici de connaître le nombre de katrans . 

 

Nombre de katrans

Trois traversées

Avant de créer un arbre binaire, regardons trois types de traversées

void BinaryTreePrevOrder(BTNode* root)
{
	if (!root)
	{
		printf("NULL ");
		return;
	}
	printf("%d ", root->_data);
	BinaryTreePrevOrder(root->_left);
	BinaryTreePrevOrder(root->_right);
}

void BinaryTreeInOrder(BTNode* root)
{
	if (!root)
	{
		printf("NULL ");
		return;
	}
	BinaryTreePrevOrder(root->_left);
	printf("%d ", root->_data);
	BinaryTreePrevOrder(root->_right);
}

void BinaryTreePostOrder(BTNode* root)
{
	if (!root)
	{
		printf("NULL ");
		return;
	}
	BinaryTreePrevOrder(root->_left);
	BinaryTreePrevOrder(root->_right);
	printf("%d ", root->_data);
}

L'avant, le milieu et l'arrière ne sont que des temps d'impression différents .

Création de préfixes

BTNode* Create_Tree()
{
    char c = str[pos++];// Lire les données du tableau 
    if(c =='#')//Si‘#’, Description le noeud est vide et renvoie le noeud de niveau supérieur 
        return NULL;
    BTNode *root = (BTNode *)malloc(sizeof(BTNode));
    root->data = c        //Si non‘#’, Créer ce noeud , Et assigner une valeur à ce noeud 
    root->left = Create_Tree();//Créer un sous - arbre gauche
    root->right = Create_Tree();//Créer un sous - arbre droit
    return root;
}
// Entrée dans le tableau de caractères 
while(scanf("%s",&str)!=EOF)
    {
        pos = 0;
        BiTNode *root = Create_Tree();
}

版权声明
本文为[Numéro d'étudiant dur C + +]所创,转载请带上原文链接,感谢
https://chowdera.com/2021/11/20211125173158181d.html

随机推荐