Wizard has range, multi-attack, and each projectile can hit the same target multiple times. Warriors and Knights are just too slow to engage in combat with monsters and don't have abilities like "taunt" to force mobs to attack them instead of the tower and their damage output is much lower.
A big problem with melee in games (and real life quite frankly) is that ranged attacks will always be the better option when engaging in targets that have to come in to the threat zone from a distance.
A warrior and a wizard starting from the same point, the wizard could defeat 3+ enemies before the warrior could even reach one.
You could give the enemies elemental resistance that makes having a warrior a strategic advantage over just having only wizards but it wouldn't really be as fun as having a warrior that just had better combat capability.
The warrior needs a way to cover ground faster to engage the target.
The knight is just a worse warrior. He circles the tower and mobs pretty much ignore him. If he is engaged in combat with one mob, other mobs just get past him. He needs a method to taunt enemies off the tower. He should be treated as your last line of defense and needs capabilies that help prevent mobs from engaging with the tower.