Why do we need recursive helper functions in Binary search trees? For example, why do we need int CountNode(TreeNode* root) to be called by int GetLength(). Because since GetLength is a member function it has access to root. Hence we can as well create a tempPtr and assign root to it and use tempPtr for the recursive call within the GetLength() member function. This way i think it reduces the number of Activation Record created by 1 and also reduces run-time stack too. Will be grateful if any one can help as to why this is done! <Cheers>