typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
BinTree BST;
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//X==BST->Data
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//X==BST->Data
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)
while(BST->Right) BST=BST->Right;
//沿右分支继续查找,直到最右点结点
return BST;
}
版权声明:本文为chy89224原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。