Search code examples
cfunctionbinary-search-treetreenodedynamic-function

What does Type * foo() mean/return?


I am implementing a Binary Search Tree. And it so happens one of my sources have a function written such that:

Node * BST_Insert(Node *root, int val)
{
//Body 
}

I already know that a pointer is a variable which contains the address of another variable and we can't assign a value to a pointer, but we can assign the address of another variable to the pointer.

My Question is what the pointers on this prototype do exactly?

Node * BST_Insert(Node *root,int val) 

Solution

  • Node is most likely a typedef of a structure representing a node in the Binary Search Tree.

    Thus Node *root represents a pointer to the root of the BST, i.e. a handle to the tree structure.

    Since insertion of a new node may change which node is the root of the tree, the function most likely returns a pointer to the new root node.