Ok, ce que tu fait s'appelle un parcours en profondeur, il est execute par un appel recursif. http://en.wikipedia.org/wiki/Depth_first_search
L'algorithme est trivial a implementer avec une pile.
En vrai, tu n'as pas besoin d'un parcours en profondeur, un parcours en largeur fonctionnerai egalement. http://en.wikipedia.org/wiki/Breadth-first_search
En vrai, n'importe quel type de parcours fonctionnera.
J'ai implementer un algorithme similaire dans mon Qix en C++. http://bmi.osu.edu/~esaule/Qix-website/
En utilisant une pile, le code ressemblerait a : http://pastebin.com/SGwczVEu
Note que je ne fias pas de C# donc ce code ne fonctionne certainement pas. En particulier, l'appel a stack est certainement incorrect.
Note que tu cree des gazillions d'objet Rectangle sas bonne raison. Je te conseille de garder des haut, bas, gauche, droite sous forme d'entier et de creer le rectangle a la fin. Comme ceci: http://pastebin.com/nhdzymRn
YMMV