Consider a binary search tree T with nodes containing the fo

Consider a binary search tree T with nodes containing the four fields key, left, right, p. and ht, where key is an integer, left, and right are pointers to the two subtrees, p is a pointer to the parent of the node, and ht is the height of the node (the maximum length of a path from this node to a leaf). Design an algorithm for a procedure insert (T, x) that inserts to a binary searches tree T a new node x (whose key is not in the tree yet), and updates lit fields accordingly. The function should work in O(h) time, where h is the length of the access path.

Solution

Algorithm is implemented in C:

struct node
{
int key;
struct node *left, *right;
};

//function to create a new BST node
struct node *new_Node(int item)
{
struct node *tem = (struct node *)malloc(sizeof(struct node));
tem->key = item;
tem->left = tem->right = NULL;
return tem;
}

/INSERT PROCEDURE

/* Given key in BST,function to insert a new node. */
struct node* insert(struct node* T, int x)
{
/* If tree is empty then return a new node */
if (T == NULL) return new_Node(x);

/* else, repeat down the tree */
if (x < T->x)
T->left = insert(T->left, x);
else if (key > node->key)
T->right = insert(T->right, x);   

return T;
}

 Consider a binary search tree T with nodes containing the four fields key, left, right, p. and ht, where key is an integer, left, and right are pointers to the

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site