二叉搜索树是一种排序树,其左子树的值<=根节点<=右子树,根据此公式,可以很方便的得出二叉树搜索树的最值,其代码如下:
typedef struct BiNode
{
char data;
BiNode *left,*right;
}BiNode,*BiTree;
void TreeMinimum(BiTree &T)//**是对指针的引用,为根节点**
{
while(T->left!=NULL)
{
T=T->left;
}
}
void TreeMaxmum(BiTree &T)
{
while(T->right!=NULL)
{
T=T->right;
}
}
二叉搜索树的搜索情况代码如下,key为待搜索的值:
void TreeSearch(BiTree &T,char key)
{
while(T!=NULL && key!=T->data)
{
if(key<T->data)
{
T=T->left;
}
else
{
T=T->right;
}
}
}
注意,这是利用循环进行递归,而不是用函数进行递归,所以效率较函数递归要高,因为利用函数递归的话,计算机要保存断点,寄存器,复制变量等等,消耗计算机的性能。下面的代码就是利用函数,不可取。
void TreeSearch(BiTree &T,char key)
{
if(T==NULL || key==T->data)
{
return T;
}
if(key<T->data)
{
return TreeSearch(T->left,key);
}
else
{
return TreeSearch(T->right,key);
}
}