/*二叉搜索树的查找操作*/
//查找效率决定于树的高度
position find(elementtype x,bintree bst)//尾递归
{
if(!bst) return NULL;//查找失败
if(x>bst->data)
{
return find(x,bst->right);//在右子树中继续查找
}
else if(x<bst->data)
{
return find(x,bst->left);//在左子树里面继续查找
}
else return bst;//查找成功,返回节点的找到节点的地址
}
/*用循环实现*/
position iterfind(elementtype x,bintree bst)
{
while(bst)
{
if(x>bst->data)
{
bst=bst->right; //向右子树中移动,继续查找
}
else if(x<bst->data)
{
bst=bst->left; //向左子树中移动,继续查找
}
else return bst; //查找成功,返回节点的找到节点的地址
}
return NULL; //查找失败
}
/*最小值和最大值的查找*/
//左小右大
position findmin(bintree bst) //找最小值 递归实现
{
if(!bst) return NULL;//空的二叉搜索树,返回NULL
else if(!bst->left)
{
return bst; //找到最左叶节点并返回
}
else
{
return findmin(bst->left); //沿左分支继续查找
}
}
position findmax(bintree bst) // 找最大值 循环实现,
{
if(bst)
{
w
搜索二叉树代码解析(增、删、改、查)
最新推荐文章于 2023-09-11 18:50:07 发布