二叉树操作集

来源:互联网 发布:淘宝宝贝收藏 编辑:程序博客网 时间:2024/06/09 21:48


BinTree Insert( BinTree BST,ElementType X )

{

    if (BST ==NULL) {

        BinTree Node =malloc(sizeof(structTNode));

        Node->Data = X;

        Node->Left = Node->Right =NULL;

        BST = Node;

    }else

    {

        if (X < BST->Data) {

            BST->Left =Insert(BST->Left, X);

        }elseif(X > BST->Data)

        {

            BST->Right =Insert(BST->Right, X);

        }

    }

    return BST;

}

BinTree Delete( BinTree BST,ElementType X )

{

    Position temp;

    if (!BST) {

        printf("Not Found\n");

    }elseif (BST->Data > X) {

        BST->Left =Delete(BST->Left, X);

    }elseif (BST->Data < X)

    {

        BST->Right =Delete(BST->Right, X);

    }else

    {

        if (BST->Left && BST->Right) {

            temp = FindMin(BST->Right);

            BST->Data = temp->Data;

            BST->Right =Delete(BST->Right, temp->Data);

        }else

        {

            temp = BST;

            if (!BST->Left) {

                BST = BST->Right;

            }elseif(!BST->Right)

            {

                BST = BST->Left;

            }

            free(temp);

        }

    }

    return BST;

}

Position Find( BinTree BST,ElementType X )

{

    if (!BST) {

        returnNULL;

    }

    if (BST->Data > X) {

        returnFind(BST->Left, X);

    }elseif(BST->Data < X)

    {

        returnFind(BST->Right, X);

    }else

    {

        return BST;

    }

}

Position FindMin( BinTree BST )

{

    if (!BST) {

        returnNULL;

    }elseif(!BST->Left)

    {

        return BST;

    }else

    {

        returnFindMin(BST->Left);

    }

}

Position FindMax( BinTree BST )

{

    if (BST) {

        while (BST->Right) {

            BST = BST->Right;

        }

    }

    return BST;

}