typedef struct node { unsigned int key; struct node *left; struct node *right; } node ; void addNode(node **tree, unsigned int key) { node *tmpNode; node *tmpTree = *tree; node *elem = malloc(sizeof(node)); elem->key = key; elem->left = NULL; elem->right = NULL; if(tmpTree) do { tmpNode = tmpTree; if(key > tmpTree->key ) { tmpTree = tmpTree->right; if(!tmpTree) tmpNode->right = elem; } else { tmpTree = tmpTree->left; if(!tmpTree) tmpNode->left = elem; } } while(tmpTree); else *tree = elem; } node *Arbre = NULL; //... addNode(&Arbre, 30); int searchNode(node *tree, unsigned int key) { while(tree) { if(key == tree->key) return 1; if(key > tree->key ) tree = tree->right; else tree = tree->left; } return 0; } if(searchNode(Arbre, Key)) //... void printTree(node *tree) { if(!tree) return; if(tree->left) printTree(tree->left); printf("Cle = %d\n", tree->key); if(tree->right) printTree(tree->right); } void printReverseTree(node *tree) { if(!tree) return; if(tree->right) printReverseTree(tree->right); printf("Cle = %d\n", tree->key); if(tree->left) printReverseTree(tree->left); } void clearTree(node **tree) { node *tmpTree = *tree; if(!tree) return; if(tmpTree->left) clearTree(&tmpTree->left); if(tmpTree->right) clearTree(&tmpTree->right); free(tmpTree); *tree = NULL; }