ContourPlot is generating a strange plot

I don't know what version you are using, but ContourPlot is a bit smarter in 11.3. The result I get here is:

ContourPlot[(-2 x y + 2 x y^2 + 2 x^2 y^2 - y^3 + y^4)/(-x^2 + 
 2 x^2 y + 4 x^3 y + x y^2) == 0, {x, -4.5, 4.5}, {y, -4.5, 4.5}, 
 PlotPoints -> 50]

enter image description here

In your version it appears that ContourPlot assumes there is a zero contour if the function value is positive on one side and negative on the other. So what you're seeing is the boundary of the region where the function is positive:

RegionPlot[(-2 x y + 2 x y^2 + 2 x^2 y^2 - y^3 + y^4)/(-x^2 + 
 2 x^2 y + 4 x^3 y + x y^2) > 0, {x, -4.5, 4.5}, {y, -4.5, 4.5}, 
 PlotPoints -> 100]

enter image description here

The simplest workaround is to do what you already did - remove the denominator.


If you Plot both contours (numerator and denominator)

ContourPlot[{(-2 x y + 2 x y^2 + 2 x^2 y^2 - y^3 + y^4) == 
0, (-x^2 + 2 x^2 y + 4 x^3 y + x y^2) == 0}, {x, -4.5, 
4.5}, {y, -4.5, 4.5} , ContourStyle -> {Blue, Red}, 
MaxRecursion -> 4]    

enter image description here

you can see some critical intersections where ContourPlot has to deal with 0/0