二叉树操作集


BinTree Insert( BinTree BST, ElementType X )

{

    if (BST == NULL) {

        BinTree Node = malloc(sizeof(struct TNode));

        Node->Data = X;

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

        BST = Node;

    }else

    {

        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 temp;

    if (!BST) {

        printf("Not Found\n");

    }else if (BST->Data > X) {

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

    }else if (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;

            }else if(!BST->Right)

            {

                BST = BST->Left;

            }

            free(temp);

        }

    }

    return BST;

}

Position Find( BinTree BST, ElementType X )

{

    if (!BST) {

        return NULL;

    }

    if (BST->Data > X) {

        return Find(BST->Left, X);

    }else if(BST->Data < X)

    {

        return Find(BST->Right, X);

    }else

    {

        return BST;

    }

}

Position FindMin( BinTree BST )

{

    if (!BST) {

        return NULL;

    }else if(!BST->Left)

    {

        return BST;

    }else

    {

        return FindMin(BST->Left);

    }

}

Position FindMax( BinTree BST )

{

    if (BST) {

        while (BST->Right) {

            BST = BST->Right;

        }

    }

    return BST;

}


发布了33 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LoverJuan/article/details/76757607