I want to know the algorithm to find the height of any BST in C.

go to the link

http://www.geeksforgeeks.org/write-a-c-program-to-find-the-maximum-depth-or-height-of-a-tree/ (recursive)

this article have complete explaination of your question enjoy

hope this will help you

int maxDepthIterative(BinaryTree *root) {

if (!root) return 0;

stack<BinaryTree*> s;

s.push(root);

int maxDepth = 0;

BinaryTree *prev = NULL;

while (!s.empty()) {

```
BinaryTree *curr = s.top();
if (!prev || prev->left == curr || prev->right == curr) {
if (curr->left)
s.push(curr->left);
else if (curr->right)
s.push(curr->right);
} else if (curr->left == prev) {
if (curr->right)
s.push(curr->right);
} else {
s.pop();
}
prev = curr;
if (s.size() > maxDepth)
maxDepth = s.size();
```

}

return maxDepth;

}

**Idea:** Every time nodeCount is set, the scan is just about to start a new row. nodeCount is set to the number of nodes in that row. When all of those nodes have been removed (i.e., nodeCount is decremented to zero), then the row has been completed and all the children of nodes on that row have been added to the queue, so the queue once again has a complete row, and nodeCount is again set to the number of nodes in that row. Source

Pseudo-Code:

```
Create a Queue, and push the root into it
Let Depth = 0
Loop:
Let nodeCount = size(Queue)
If nodeCount is 0:
return Depth
Increment Depth
While nodeCount > 0:
Remove the node at the front of the queue
Push its children, if any, on the back of the queue
Decrement nodeCount
```

its recursive.

updated