Popular Posts

Friday, July 1, 2011

Level of a node in Binary Search Tree

int find_level(BSTreeNode root, int key) {
int depth = 0;
BSTreeNode temp = root;
while (temp != null) {
if (temp.value == key)
return depth;
else if (temp.value < key) {
depth++;
temp = temp.right;
} else {
depth++;
temp = temp.left;
}
}
return depth;
}

Recursive way :
int getLevelUtil(BSTreeNode node, int data, int level)
{
if ( node == NULL )
return 0;

if ( node->data == data )
return level;

return getLevelUtil ( node->left, data, level+1) |
getLevelUtil ( node->right, data, level+1);
}


/* Returns level of given data value */
int getLevel(BSTreeNode node, int data)
{
return getLevelUtil(node,data,1);
}

No comments:

Post a Comment