Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct _Node{
- int value;
- int count;
- struct _Node *l,*r;
- }Node;
- Node *raiz = NULL;
- void inOrdenCreciente(Node *root);
- //void inOrdenDecreciente(Node *root);
- //void postOrden(Node *nodo);
- //void postOrdenDelTree(Node **nodo);
- Node * addNodeBTS(Node **root,int valor);
- //void freeNodeBTS(Node *root);
- //Node * delTree(Node *t);
- int main(void){
- addNodeBTS(&raiz,2);
- addNodeBTS(&raiz,78);
- addNodeBTS(&raiz,2);
- addNodeBTS(&raiz,7);
- addNodeBTS(&raiz,8);
- addNodeBTS(&raiz,8);
- //inOrdenCreciente(raiz);
- //printf("Recorrido del arbol en Post-Orden:\n\n");
- //postOrden(raiz);
- printf("Recorrido In-Orden creciente:\n\n");
- inOrdenCreciente(raiz);
- //printf("Recorrido In-Orden decreciente:\n\n");
- //inOrdenDecreciente(raiz);
- //postOrdenDelTree(&raiz);
- //freeNodeBTS(raiz);
- //delTree(raiz);
- //postOrden(raiz);
- return 0;
- }
- //root puntero a Node
- // *root = raiz
- Node * addNodeBTS(Node **root,int _value){
- Node * node = NULL;
- Node **Pnode = &(*root); // *root = raiz, luego Pnode =&raiz | Pnode apunta a raiz inicialmente|
- while((*Pnode)!=NULL ){
- if(_value > (*Pnode)->value)
- Pnode = &((*Pnode)->r);
- else if(_value < (*Pnode)->value)
- Pnode = &((*Pnode)->l);
- else{ // _value == (*Pnode)->value
- ((*Pnode)->count)++;
- return *Pnode;
- }
- }
- node = (Node *)malloc(sizeof(Node)); // creamos nodo
- if(node==NULL){
- printf("*** Error: No hay memoria disponible para agregar mas nodos al arbol binario\n");
- return NULL;
- }
- node->value = _value;
- node->l = NULL;
- node->r = NULL;
- node->count = 1;
- *Pnode = node; // Pnode apunta a raiz cuando no hay ningun nodo, *Pnode = raiz ,se asigna el primer nodo en ese caso.
- // Pnode es un puntero que apunta a las direcciones izquierda o derecha de cada nodo segun el criterio.
- return node;
- }
- void inOrdenCreciente(Node *nodo){
- if(nodo)
- {
- inOrdenCreciente(nodo->l);
- printf("%d:%d\n", nodo->value, nodo->count);
- inOrdenCreciente(nodo->r);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement