Given a binary search tree with the following declaration:

I need to find all the shortest paths in the tree. For example:Code:`struct node`

{int value;

Node *left, *right;};

class BST{

private:

Node *head;

public:

BST(){head = NuLL;}

};

I should print:

10

/ \

6 15

/ \ \

2 7 12

10 6 2

10 6 7

10 15 12

I am allowed to make use of data structures of list, stack and queue together with their basic manipulation functions.

Can someone give me an idea on how should i start(don't need codes)? I believe i need to find the min ht of the tree first, but i dont even know how to do that.

Second Question:

How is a function to find the max ht of a BST typically written? I thought of one way and i need someone to tell me if there's a better way

Code:`//pass the root of a non empty tree to this node`

// the functions returns the max ht through maxHt

void BST::findMaxHt(node *rt,int curHt=0, int &maxHt)

{

if(rt==NULL) return;

if(curHt>maxHt)

maxHt= curHt;

findMaxHt(rt->left, curHt+1, maxHt);

findMaxtHt(rt->right, curHt+1, maxHt);

}