查找某一值
查找从根结点开始,如果树为空,返回NULL
若搜索树非空,则根结点键值和X进行比较,并进行不同处理:
- 若X小于根结点的键值,只需在左子树中继续搜索
- 若X大于根结点的键值,只需在右子树中继续搜索
- 若二者相等,搜索完成,返回指向此结点的指针
//定义二叉树
typedef struct TreeNode *BinTree;
typedef BinTree Position;
typedef int ElementType;
struct TreeNode
{
ElementType data;
BinTree left;
BinTree right;
};
Position Find(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 FindMax(BinTree bst)
{
if(bst)
while(bst->right)
bst=bst->right;
return bst;
}
查找最小值
最小元素一定是在树的最左分枝的端结点上
Position FindMin(BinTree bst)
{
if(bst)
while(bst->left)
bst=bst->left;
return bst;
}