二叉搜索树的各种问题

 

1.插入

BinTree Insert( BinTree BST, ElementType X ){
    if(!BST){
        BST=(BinTree )malloc(sizeof(struct TNode));
        BST->Data =X;
        BST->Left =BST->Right =NULL;
    }
    else{
        if(X<BST->Data )
            BST->Left =Insert(BST->Left ,X);
        else if(X>BST->Data )
            BST->Right =Insert(BST->Right ,X);
    }
    return BST;
} 
View Code

2.查找最大值

Position FindMax( BinTree BST ){
    if(BST)
        while(BST->Right )    BST=BST->Right ;
    return BST;
}
View Code

3.查找最小值

Position FindMin( BinTree BST ){
    if(!BST) return NULL;
    else if(!BST->Left ) return BST;
    else return FindMin(BST->Left);
}
View Code

4.查找

Position Find( BinTree BST, ElementType X ){
    if(!BST) return NULL;
    if(X>BST->Data)  return Find(BST->Right ,X);
    else if(X<BST->Data )    return Find(BST->Left ,X);
    else return BST;
}
View Code

5.删除

BinTree Delete( BinTree BST, ElementType X ){
    Position Tmp;
    if(!BST) printf("Not Found\n");
    else{
        if(X<BST->Data )
            BST->Left =Delete(BST->Left ,X);
        else if(X>BST->Data )
            BST->Right =Delete(BST->Right ,X);
        else{
            if(BST->Left &&BST->Right){
                Tmp=FindMin(BST->Right );
                BST->Data =Tmp->Data ;
                BST->Right =Delete(BST->Right ,BST->Data );
            }
            else{
                Tmp=BST;
                if(!BST->Left ) BST=BST->Right ;
                else BST=BST->Left ;
                free(Tmp);
            }
        }
    }
    return BST;
}
View Code

 

转载于:https://www.cnblogs.com/astonc/p/10029354.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值