Stoplight critique

ok, so yesterday I posted the slot machine code that I wrote. You all gave me some very helpful criticism. I wrote a new program using the advice you guys gave me and wrote a very very simple code for a stoplight. I was hoping I could get some more critique. Here is the program:

//STRUCT USED FOR THE SETTING UP OF THE PINS
struct set_up {
  int pin;
};


struct set_up button = {6};   //BUTTON IS PIN 6

//THE FIRST SET OF STOPLIGHTS IS PINS 2-4 AND THE SECOND SET IS PINS 8-10
struct set_up leds[2][3] = {
  {{2}, {3}, {4}},
  {{8}, {9}, {10}},
};

void setup() {

  //SET ALL PINS USED FOR STOPLIGHTS AS OUTPUTS
  for (int row = 0; row < 2; row++) {
    for (int column = 0; column < 3; column++) {
      pinMode(leds[row][column].pin, OUTPUT);
    }
  }

  pinMode(button.pin, INPUT);     //SET THE BUTTON(PIN 6) AS AN INPUT

  digitalWrite(leds[0][0].pin, HIGH);   //TURN THE GREEN LIGHT ON FOR THE FIRST SET OF STOPLIGHTS
  digitalWrite(leds[1][2].pin, HIGH);   //TURN THE RED LIGHT ON FOR THE SECOND SET OF STOPLIGHTS

}

void greentored1();   //FUNCTION PROTOTYPE FOR GREEN TO RED FUNCTION 1
void greentored2();   //FUNCTION PROTOTYPE FOR GREEN TO RED FUNCTION 2

void loop() {

  //IF THE BUTTON IS PUSHED, CHECK TO SEE IF THE GREEN LIGHT ON THE FIRST SET OF STOPLIGHTS IS ON
  if (digitalRead(button.pin) == HIGH) {
    if (digitalRead(leds[0][0].pin) == 1) {
      greentored1();   //IF IT IS, RUN greentored1
    }
    else {
      greentored2();   //IF IT IS NOT, RUN greentored2
    }
  }
}

//FUNCTION DEFINITION FOR GREEN TO RED FUNCTION 1
void greentored1() {
  delay(6000);                           //WAIT 6 SECONDS
  digitalWrite(leds[0][0].pin, LOW);     //TURN THE GREEN LIGHT FOR THE FIRST SET OF STOPLIGHTS OFF
  digitalWrite(leds[0][1].pin, HIGH);    //TURN THE YELLOW LIGHT FOR THE FIRST SET OF STOPLIGHTS ON
  delay(4000);                           //WAIT 4 SECONDS
  digitalWrite(leds[0][2].pin, HIGH);    //TURN THE RED LIGHT FOR THE FIRST SET OF STOPLIGHTS ON
  digitalWrite(leds[0][1].pin, LOW);     //TURN THE YELLOW LIGHT FOR THE FIRST SET OF STOPLIGHTS OFF
  delay(3000);                           //WAIT 3 SECONDS
  digitalWrite(leds[1][0].pin, HIGH);    //TURN THE GREEN LIGHT FOR THE SECOND SET OF STOPLIGHTS ON
  digitalWrite(leds[1][2].pin, LOW);     //TURN THE RED LIGHT FOR THE SECOND SET OF STOPLIGHTS OFF
}

//FUNCTION DEFINITION FOR GREEN TO RED FUNCTION 2
void greentored2() {
  delay(6000);                           //WAIT 6 SECONDS
  digitalWrite(leds[1][0].pin, LOW);     //TURN THE GREEN LIGHT FOR THE SECOND SET OF STOPLIGHTS OFF
  digitalWrite(leds[1][1].pin, HIGH);    //TURN THE YELLOW LIGHT FOR THE SECOND SET OF STOPLIGHTS ON
  delay(4000);                           //WAIT 4 SECONDS
  digitalWrite(leds[1][2].pin, HIGH);    //TURN THE RED LIGHT FOR THE SECOND SET OF STOPLIGHTS ON
  digitalWrite(leds[1][1].pin, LOW);     //TURN THE YELLOW LIGHT FOR THE SECOND SET OF STOPLIGHTS OFF
  delay(3000);                           //WAIT 3 SECONDS
  digitalWrite(leds[0][0].pin, HIGH);    //TURN THE GREEN LIGHT FOR THE FIRST SET OF STOPLIGHTS ON
  digitalWrite(leds[0][2].pin, LOW);     //TURN THE RED LIGHT FOR THE FIRST SET OF STOPLIGHTS OFF
}
struct set_up {
  int pin;
};

Why? What does this buy you? Why not something like:

enum lightColor {RED, GREEN, YELLLOW};
struct trafficlight {
   byte red;   // pin with red light
   byte green; // pin with green light
   byte yellow; // pin with yellow light
   byte currentcolor;
};

struct trafficlight northsouth = {2, 3, 4, RED};
struct trafficlight eastwest = {8, 9, 10, RED};

YELLLOW? What color is that?