Hello,
I was trying to quickly write a function that finds the tree node with the lowest value for one of its unsorted members. Thus:-
Code:
// Inputs: tree node to search, optional limiter value (node returned must have ulCode > *ulPrevLowest)
t_freqtree *TreeLowest(t_freqtree *root, unsigned long *ulPrevLowest)
{
t_freqtree *cmpleft, *cmpright;
if (root)
{
// Search everywhere else first, tree isn't sorted by ulCode!
cmpleft = TreeLowest(root->left, ulPrevLowest);
cmpright = TreeLowest(root->right, ulPrevLowest);
// There can only be one
if (cmpleft && cmpright)
cmpleft = (cmpleft->ulCode < cmpright->ulCode) ? cmpleft : cmpright;
else
cmpleft = (cmpleft) ? cmpleft : cmpright;
if (ulPrevLowest)
{
if (root->ulCode <= *ulPrevLowest && cmpleft)
{
if (cmpleft->ulCode > *ulPrevLowest)
return cmpleft;
}
}
else
{
if (cmpleft)
return (cmpleft->ulCode < root->ulCode) ? cmpleft : root;
else
return root;
}
}
return NULL;
}
There are no duplicate values in the tree. Needless to say, this doesn't work and I'm bogged down.
Help?