Lab 2 - B Tree
Lab 2 - B Tree
#include <stdio.h>
#include <stdlib.h>
#define MAX 3
#define MIN 2
struct BTreeNode {
int val[MAX + 1], count;
struct BTreeNode *link[MAX + 1];
};
// Create a node
struct BTreeNode *createNode(int val, struct BTreeNode *child)
{
struct BTreeNode *newNode;
newNode = (struct BTreeNode *)malloc(sizeof(struct BTreeNode));
newNode->val[1] = val;
newNode->count = 1;
newNode->link[0] = root;
newNode->link[1] = child;
return newNode;
}
// Insert node
void insertNode(int val, int pos, struct BTreeNode *node,
struct BTreeNode *child)
{
int j = node->count;
while (j > pos) {
node->val[j + 1] = node->val[j];
node->link[j + 1] = node->link[j];
j--;
}
node->val[j + 1] = val;
node->link[j + 1] = child;
node->count++;
}
// Split node
void splitNode(int val, int *pval, int pos, struct BTreeNode *node,
struct BTreeNode *child, struct BTreeNode **newNode)
{
int median, j;
if (pos > MIN)
median = MIN + 1;
else
median = MIN;
// Search node
void search(int val, struct BTreeNode *myNode)
{
int pos;
if (!myNode) {
return;
}
return;
}
// Traverse then nodes
void traversal(struct BTreeNode *myNode) {
int i;
if (myNode) {
for (i = 0; i < myNode->count; i++) {
traversal(myNode->link[i]);
printf("%d ", myNode->val[i + 1]);
}
traversal(myNode->link[i]);
}
}
int main()
{
int val,it,s;
while(1)
{
int op;
printf("\n\n\t1.Insert an element into B_tree");
printf("\n\t 2.Print traversal of B_tree");
printf("\n\t 3.Search B_tree");
printf("\n\t 4.Exit");
printf("\n\tNter your choice :: ");
scanf("%d",&op);
switch(op)
{
case 1:
printf("\n Nter the element to be inserted ::");
scanf("%d",&it);
insert(it);
break;
case 2:
printf("\nB-Tree contains ::\n");
traversal(root);
break;
case 3:
printf("\n Nter the element to search B-tree :: ");
scanf("%d",&s);
search(s, root);
break;
case 4:
exit(1);
}
}
}