Un Arbre de Recherche binaire en C

Je suis un Python gars. L'apprentissage du langage C, et j'ai essayé de mettre en œuvre des Binaires de Recherche Arbres en C. j'ai écrit le code, et j'ai essayé de quelques heures, mais, pas en mesure d'obtenir la sortie comme prévu. S'il vous plaît aider!

Merci de me corriger.

#include<stdlib.h>
#include<stdio.h>
typedef int ElementType;
typedef struct TreeNode {
ElementType element;
struct TreeNode *left, *right;
} TreeNode;
TreeNode *createTree(){
//Create the root of tree
TreeNode *tempNode;
tempNode = malloc(sizeof(TreeNode));
tempNode->element = 0;
tempNode->left = NULL;
tempNode->right = NULL;
return tempNode;
}
TreeNode *createNode(ElementType X){
//Create a new leaf node and return the pointer
TreeNode *tempNode;
tempNode = malloc(sizeof(TreeNode));
tempNode->element = X;
tempNode->left = NULL;
tempNode->right = NULL;
return tempNode;
}
TreeNode *insertElement(TreeNode *node, ElementType X){
//insert element to Tree
if(node==NULL){
return createNode(X);
}
else{
if(X < node->element){
node->left = insertElement(node->left, X);
}
else if(X > node->element){
node->right =  insertElement(node->right, X);
}
else if(X == node->element){
printf("Oops! the element is already present in the tree.");
}
}
}
TreeNode *displayTree(TreeNode *node){
//display the full tree
if(node==NULL){
return;
}
displayTree(node->left);
printf("| %d ", node->element); 
displayTree(node->right);
}
main(){
//pointer to root of tree #2
TreeNode *TreePtr;
TreeNode *TreeRoot;
TreeNode *TreeChild;
//Create the root of tree
TreePtr = createTree();
TreeRoot = TreePtr;
TreeRoot->element = 32;
printf("%d\n",TreeRoot->element);
insertElement(TreeRoot, 8);
TreeChild = TreeRoot->left;
printf("%d\n",TreeChild->element);  
insertElement(TreeRoot, 2);
insertElement(TreeRoot, 7);
insertElement(TreeRoot, 42);
insertElement(TreeRoot, 28);
insertElement(TreeRoot, 1);
insertElement(TreeRoot, 4);
insertElement(TreeRoot, 5);
//the output is not as expected :(
displayTree(TreeRoot);
}
qu'est-ce exactement entendre par "pas en mesure d'obtenir la sortie comme prévu" ?
Déboguer votre code et de trouver votre problème exact.
Je reçois| 5 | 32 | 42 lors de l'appel de displayTree() fonction. Je l'attends pour imprimer des autres Éléments aussi.
Salut, j'ai essayé de copier-coller le code ci-dessus, et le " createTree la fonction ne serait pas compiler. J'ai ensuite ajouté le (TreeNode*) en fonte d'avant malloc et cela a fonctionné. Je me demandais - est ce que cela a quelque chose à voir avec le fait que je suis en utilisant un vieux c89 compilateur?

OriginalL'auteur heapzero | 2010-03-24