Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include<stdio.h>
- #include<conio.h>
- #include<stdio.h>
- struct node //Структурата която се ползва за бинарно дърво
- {
- int info;
- struct node *lchild;
- struct node *rchild;
- }*root;
- void find(int item,struct node **par,struct node **loc) // Функция за търсене в дърво
- {
- struct node *ptr,*ptrsave;
- if(root==NULL) /*tree empty*/
- {
- *loc=NULL;
- *par=NULL;
- return;
- }
- if(item==root->info) /*item is at root*/
- {
- *loc=root;
- *par=NULL;
- return;
- }
- /*Initialize ptr and ptrsave*/
- if(item<root->info)
- ptr=root->lchild;
- else
- ptr=root->rchild;
- ptrsave=root;
- while(ptr!=NULL)
- {
- if(item==ptr->info)
- { *loc=ptr;
- *par=ptrsave;
- return;
- }
- ptrsave=ptr;
- if(item<ptr->info)
- ptr=ptr->lchild;
- else
- ptr=ptr->rchild;
- }/*End of while */
- *loc=NULL; /*item not found*/
- *par=ptrsave;
- }
- void insert(int item) //Функция за добавяне на елемент
- { struct node *tmp,*parent,*location;
- find(item,&parent,&location); //Викане на функцията за търсене
- if(location!=NULL)
- {
- printf("Item already present %d\n", item); //Бинарно дърво не може да има дупликации на елементите
- return;
- }
- tmp=(struct node *)malloc(sizeof(struct node));
- tmp->info=item;
- tmp->lchild=NULL;
- tmp->rchild=NULL;
- if(parent==NULL)
- root=tmp;
- else
- if(item<parent->info)
- parent->lchild=tmp;
- else
- parent->rchild=tmp;
- }/*End of insert()*/
- void inorder(struct node *ptr) //Функция за принтиране на дървото сортирано
- {
- if(root==NULL)
- {
- printf("Tree is empty");
- return;
- }
- if(ptr!=NULL)
- {
- inorder(ptr->lchild);
- printf("%d ",ptr->info);
- inorder(ptr->rchild);
- }
- }
- void printOdd(struct node *ptr) //Функция за принтиране на нечетните числа
- {
- if(ptr != NULL)
- {
- if((ptr->info % 2) != 0)
- printf("%d ", ptr->info);
- printOdd(ptr->lchild);
- printOdd(ptr->rchild);
- }
- }
- void printEven(struct node *ptr) //Функция за принтиране на четните числа
- {
- if(ptr != NULL)
- {
- if((ptr->info % 2) == 0)
- printf("%d ", ptr->info);
- printEven(ptr->lchild);
- printEven(ptr->rchild);
- }
- }
- int main()
- {
- insert(10); //Добавяне на елемент (Горе е декларирана глобална променлива която е root-a)
- insert(11);
- insert(4);
- printf("The tree printed sorted:\n");
- inorder(root); //Принтиране на дървото сортирано
- printf("\nEven numbers in the tree:\n");
- printEven(root);//Принтиране на четни числа
- printf("\nOdd numbers in the tree:\n");
- printOdd(root);// Принтиране на нечетни числа
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement