美文网首页
mooc二叉查找树

mooc二叉查找树

作者: 有苦向瓜诉说 | 来源:发表于2017-03-26 11:16 被阅读0次

    <a href='http://blog.csdn.net/wanmeiwushang/article/details/51921821'>参考博客链接</a>

    自己写的代码:

     BinTree Insert( BinTree BST, ElementType X )
        {
            if(!BST){
                BST=(BinTree)malloc(sizeof(struct TNode));
                BST->Data=X;
                BST->Left=BST->Right=NULL;
                return BST;
            }
            if(X<BST->Data){
                BST->Left=Insert(BST->Left,X);
            }
            else if(X>BST->Data){
                BST->Right=Insert(BST->Right,X);
            }
            return BST; 
        }
        BinTree Delete( BinTree BST, ElementType X )
        {
            Position Tmp;
            if(!BST){
                printf("Not Found\n");
                return BST;
            }
            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=BST->Right;
                    while(Tmp->Left){
                        Tmp=Tmp->Left;
                    }
                    BST->Data=Tmp->Data;
                    BST->Right=Delete(BST->Right,Tmp->Data);
                }
                else{
                    Tmp=BST;
                    if(!BST->Left){
                        BST=BST->Right;
                    }
                    else if(!BST->Right){
                        BST=BST->Left;
                    }
                    free(Tmp);
                }
            }
            return BST;
        }
        Position Find( BinTree BST, ElementType X ) // 用递归比较好用
        {
            if(!BST) return NULL;
            if(X==BST->Data) return BST;
            else if(X>BST->Data) return Find(BST->Right,X);
            else if(X<BST->Data) return Find(BST->Left,X);
        }
        Position FindMin( BinTree BST )
        {
            if(!BST) return NULL;
            while(BST->Left){
                BST=BST->Left;
            }
            return BST;
        }
        Position FindMax( BinTree BST )
        {
            if(!BST) return NULL;
            while(BST->Right){
                BST=BST->Right;
            }
            return BST;
        }
    

    相关文章

      网友评论

          本文标题:mooc二叉查找树

          本文链接:https://www.haomeiwen.com/subject/mtzhottx.html