According to your comment in the other answers, your problem isn't the creep growing algorithm, but rather the algorithm which chooses which creep tile to use.
Which tile to use depends on whether:
- the upper tile is infected or not
- the right tile is infected or not
- the lower tile is infected or not
- the left tile is infected or not
That means you will need a total of 16 tiles. You can easily address them with a bitfield. Here is some pseudocode which will choose a different tile for every possible creep constellation:
index = 0;
if left tile is creeped then index += 1
if lower tile is creeped then index += 2
if right tile is creeped then index += 4
if upper tile is creeped then index += 8
creep_tile = creep_tiles[index]
Note that whenever you change the infection status of a tile, all infected adjacent tiles need to be re-evaluated, because their neighborhood has now changed.
How to design the 16 tile graphics so that they fit together nicely is a (new) question for a graphic designer.