6-2 二叉排序树查找最小值最大值操作

description

本题要求实现二叉排序树的两个基本操作。

函数接口定义:

BSTree FindMin( BSTree T);
BSTree FindMax( BSTree T);
函数FindMin返回二叉排序树T中最小元素结点的指针;

函数FindMax返回二叉排序树T中最大元素结点的指针。

其中BSTree结构定义如下:

typedef int ElemType;
typedef struct BSTNode
{
ElemType data;
struct BSTNode *lchild,*rchild;
}BSTNode,*BSTree;
裁判测试程序样例:

#include
#include
typedef int ElemType;
typedef struct BSTNode
{
ElemType data;
struct BSTNode *lchild,*rchild;
}BSTNode,BSTree;
BSTree CreateBST(); /
二叉排序树创建,由裁判实现,细节不表 /
BSTree FindMin( BSTree T);
BSTree FindMax( BSTree T);
void Inorder(BSTree T);/
中序遍历,由裁判实现,细节不表 */

int main()
{
BSTree T,MinP, MaxP;
ElemType n,e;
T = CreateBST();
printf(“Inorder:”); Inorder(T); printf(“\n”);
MinP = FindMin(T);
MaxP = FindMax(T);
if(MinP) printf(“%d is the smallest key\n”,MinP->data);
if(MaxP) printf(“%d is the largest key\n”,MaxP->data);
return 0;
}
/* 你的代码将被嵌在这里 */

输入样例:

输入为一行以-1结束的整数,例如创建如下二叉排序树,输入为:

二叉排序树.png

4 3 5 1 2 7 6 8 -1

输出样例:

Inorder: 1 2 3 4 5 6 7 8
1 is the smallest key
8 is the largest key

solution

BSTree FindMin( BSTree T){
    if(!T || !T->lchild) return T;
    else if(T->lchild) FindMin(T->lchild);
}
BSTree FindMax( BSTree T){
    if(!T || !T->rchild) return T;
    else if(T->rchild) FindMax(T->rchild);
}

你可能感兴趣的:(pat,算法,数据结构)