16-2-¶ó.°èÃþÀûÀÎ ÀÚ·á Ç¥Çö

ÇϳªÀÇ ºÎ¸ð ¾Æ·¡¿¡ º¹¼ö °³ÀÇ ÀÚ½ÄÀÌ Æ÷Ç﵃ ¼ö ÀÖ´Â ±¸Á¶¸¦ °èÃþÀû(Hierarchical)À̶ó°í Çϴµ¥ ÀÌ·± ÀÚ·á´Â ¾ÆÁÖ ÈçÇÏ´Ù. ȸ»çÀÇ Á¶Á÷µµ, ¿ìÆí ¹øÈ£ºÎ, »óǰ ºÐ·ùÇ¥ µî ÀÏ»ó »ýȰ¿¡¼­µµ ÈçÈ÷ Á¢ÇÒ ¼ö ÀÖ´Â Á¤º¸µéÀÌ ¸ðµÎ °èÃþÀûÀ̸ç ÇÁ·Î±×·¥ÀÌ ÀÌ·± ÀڷḦ ´Ù·ç¾î¾ß ÇÏ´Â °æ¿ì°¡ ¸¹´Ù.

¿ø·ÐÀûÀ¸·Î °èÃþÀûÀÎ ÀÚ·áµéÀº Æ®¸®(Tree)·Î °ü¸®ÇÒ ¼ö ÀÖÁö¸¸ ³Ê¹« º¹ÀâÇÏ°í ºñÈ¿À²ÀûÀε¥´Ù°¡ µ¥ÀÌÅÍ º£À̽ºÀÇ Å×ÀÌºí ±¸Á¶¿Í´Â ¸ÂÁö ¾Ê´Ù. °ü°èÇü µ¥ÀÌÅÍ º£À̽ºÀÇ Å×À̺íÀº ¹è¿­ ÇüÅ·ΠµÇ¾î ÀÖ´Ù. ±×·¡¼­ °èÃþÀûÀÎ ÀÚ·á¶óµµ Åë»ó ¹è¿­À̳ª ¿¬°á ¸®½ºÆ®¸¦ »ç¿ëÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀ» ¸¹ÀÌ »ç¿ëÇϴµ¥ °¢ ·¹Äڵ忡 ºÎ¸ð°¡ ´©±¸ÀÎÁö¸¦ Ç¥½ÃÇÔÀ¸·Î½á ·¹Äڵ尣ÀÇ °èÃþÀ» ±¸¼ºÇÑ´Ù.

½Ã±ºÇàÁ¤µµ¸¦ ¹è¿­·Î Ç¥ÇöÇØ º¸µµ·Ï ÇÏÀÚ. ÇàÁ¤µµ´Â ´ëÇѹα¹À̶ó´Â ·çÆ® ·¹ÄÚµå ¾Æ·¡¿¡ ¼­¿ï½Ã, °æ±âµµ, °­¿øµµ µîÀÌ ÀÖ°í °­¿øµµ ¾Æ·¡¿¡ ¼ÓÃʽÃ, ¿øÁÖ½Ã, Ãáõ½Ã µîÀÌ ÀÖ´Â ÀüÇüÀûÀÎ °èÃþ ±¸Á¶ÀÌ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ arCity ¹è¿­ÀÌ ÀÌ·± °èÃþÀûÀÎ °ü°è¸¦ ÀÏÂ÷¿øÀÇ ¹è¿­·Î ±â¾ïÇÑ´Ù.

 

¿¹ Á¦ : CityTree

#include <Turboc.h>

 

struct tag_City

{

     int Parent;

     TCHAR *Name;

};

 

tag_City arCity[]={

     -1,"´ëÇѹα¹",

     0,"¼­¿ïƯº°½Ã",

     1,"µ¿´ë¹®±¸",

     2,"û·®¸®µ¿",

     2,"ȸ±âµ¿",

     2,"½Å¼³µ¿",

     1,"ÇѰ­±¸",

     6,"Æþ´çµ¿",

     6,"¿ùôµ¿",

     0,"°æ±âµµ",

     9,"È­¼º½Ã",

     9,"±Ý¼º½Ã",

     9,"¸ñ¼º½Ã",

};

 

BOOL HaveChild(int idx)

{

     int i;

     for (i=0;i<sizeof(arCity)/sizeof(arCity[0]);i++) {

          if (arCity[i].Parent == idx) {

              return TRUE;

          }

     }

     return FALSE;

}

 

void PrintCity(int Parent,int indent)

{

     int i,j;

 

     for (i=0;i<sizeof(arCity)/sizeof(arCity[0]);i++) {

          if (arCity[i].Parent == Parent) {

              for (j=0;j<indent;j++) putch(' ');

              printf("%s\n",arCity[i].Name);

              if (HaveChild(i)) {

                   PrintCity(i,indent+2);

              }

          }

     }

}

 

void main()

{

     PrintCity(-1,0);

}

 

tag_City ±¸Á¶Ã¼°¡ ÇϳªÀÇ ·¹ÄÚµåÀε¥ Parent ¸â¹ö°¡ ºÎ¸ð ·¹ÄÚµåÀÇ Ã·ÀÚ¸¦ ±â¾ïÇϸç NameÀº ÇàÁ¤¸íÀÌ´Ù. arCity ¹è¿­ÀÇ ÃʱⰪÀ» ºÐ¼®ÇØ º¸¸é ´ëÇѹα¹ÀÇ ºÎ¸ð´Â -1·Î ÁöÁ¤µÇ¾î ÀÖ¾î ·çÆ®ÀÓÀ» Ç¥½ÃÇϰí ÀÖ´Ù. ¼­¿ïƯº°½Ã, °æ±âµµ´Â ´ëÇѹα¹ÀÇ ÀÚ½Ä ·¹ÄÚµåÀ̹ǷΠºÎ¸ð°¡ 0¹ø ·¹ÄÚµå·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¸ç µ¿´ë¹®±¸, ÇѰ­±¸ÀÇ ºÎ¸ð´Â 1¹ø ÷ÀÚÀÎ ¼­¿ïƯº°½Ã·Î µÇ¾î ÀÖ´Ù. Æþ´çµ¿, ¿ùôµ¿Àº ÇѰ­±¸ ¾Æ·¡¿¡ ÀÖÀ¸¹Ç·Î ºÎ¸ðÀÇ Ã·ÀÚ°¡ 6¹øÀÌ´Ù.

arCity ¹è¿­Àº Àç±ÍÀûÀÎ °èÃþÀû ±¸Á¶¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ÀÌ ¹è¿­À» ¼øÈ¸ÇÏ·Á¸é Àç±Í È£ÃâÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¿¹Á¦¿¡¼­´Â arCity¿¡ Æ÷ÇÔµÈ ¸ðµç ·¹Äڵ带 ¼øÈ¸Çϸ鼭 Æ®¸® ÇüÅ·ΠÃâ·ÂÇÏ´Â PrintCity ÇÔ¼ö¸¦ ÀÛ¼ºÇϰí ÀÖ´Ù. PrintCity ÇÔ¼ö´Â Parent ¾Æ·¡ÀÇ ¸ðµç Â÷Àϵ带 indent À§Ä¡¿¡ Ãâ·ÂÇÑ´Ù. indent´Â µé¿©¾²±â Á¤µµ¸¦ ÀǹÌÇÏ¸ç °èÃþ ±¸Á¶»óÀÇ ·¹ÄÚµå ±íÀ̸¦ Ç¥ÇöÇÑ´Ù. ÀÚ½Ä ·¹ÄÚµå´Â ºÎ¸ðº¸´Ù µÎ Ä­ ´õ µé¿©¾²´Â °ÍÀÌ º¸±â¿¡ ÁÁ´Ù. main ÇÔ¼ö¿¡¼­ PrintCity(-1,0)À» È£ÃâÇÏ¿© ·çÆ® ·¹ÄÚµå ¾Æ·¡ÀÇ ¸ðµç ÀڽĵéÀ» µé¿©¾²±â 0¿¡ Ãâ·ÂÇÑ´Ù. ÀÌÈÄ ´ëÇѹα¹ ¾Æ·¡ÀÇ ¸ðµç ·¹Äڵ带 Ãâ·ÂÇÏ´Â ÀÏÀº PrintCity ÇÔ¼ö°¡ ´ã´çÇÑ´Ù.

PrintCity ÇÔ¼ö´Â ·çÇÁ¸¦ µ¹¸ç ºÎ¸ð°¡ ParentÀÎ ¸ðµç ·¹Äڵ带 °Ë»öÇØ¼­ Ãâ·ÂÇ쵂 ¸¸¾à ÀÌ ·¹Äڵ尡 ÀÚ½ÄÀ» °Å´À¸®°í ÀÖÀ¸¸é Àç±Í È£ÃâÀÌ ¹ß»ýÇÑ´Ù. ÃÖÃÊ main¿¡¼­ Parent°ªÀ¸·Î -1À» ÁÖ¾ú°í ºÎ¸ð°¡ -1ÀÎ ·¹ÄÚµå´Â ´ëÇѹα¹ Çϳª¹Û¿¡ ¾øÀ¸¸ç ÀÌ ·¹ÄÚµå ¾Æ·¡¿¡ ¼­¿ï½Ã, °æ±âµµ°¡ ÀÖÀ¸¹Ç·Î µÎ ¹ø Àç±Í È£ÃâÀÌ ¹ß»ýÇÒ °ÍÀÌ´Ù. À̶§ indent¸¦ 2 Áõ°¡½ÃÄÑ ºÎ¸ðº¸´Ù Á¶±Ý ´õ µé¿© ¾²µµ·Ï Çß´Ù. Ãâ·Â °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

´ëÇѹα¹

  ¼­¿ïƯº°½Ã

    µ¿´ë¹®±¸

      û·®¸®µ¿

      ȸ±âµ¿

      ½Å¼³µ¿

    ÇѰ­±¸

      Æþ´çµ¿

      ¿ùôµ¿

  °æ±âµµ

    È­¼º½Ã

    ±Ý¼º½Ã

    ¸ñ¼º½Ã

 

´ëÇѹα¹ ¾Æ·¡ÀÇ ·¹ÄÚµåµéÀÌ º¸±âÁÁ°Ô µé¿©¾²±âµÇ¾î Ãâ·ÂµÇ¾ú´Ù. ±×·¡ÇÈ È¯°æÀ̶ó¸é ºÎ¸ð¿Í Àڽİ£ÀÇ °ü°è¸¦ Á÷¼±À¸·Î ¿¬°áÇÏ¿© Á» ´õ º¸±â ÁÁ°Ô Ãâ·ÂÇÒ ¼öµµ ÀÖ°í Win32 Æ®¸® ºä ÄÁÆ®·ÑÀ» »ç¿ëÇϸé Ž»ö±âó·³ °èÃþÀûÀÎ ³ëµå¸¦ »ý¼ºÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ƯÁ¤ ·¹ÄÚµå¹Ø¿¡ ÀÚ½ÄÀÌ ÀÖ´ÂÁö ¾ø´ÂÁö´Â HaveChild ÇÔ¼ö·Î °£´ÜÇϰÔ(±×·¯³ª Á¶±Ý ºñÈ¿À²ÀûÀ¸·Î) °Ë»çÇß´Ù.

ÀÌ ÇÔ¼ö´Â ºÒÇÊ¿äÇÑ Àç±Í È£ÃâÀ» ¸·¾ÆÁÖ´Â ¿ªÇÒÀ» Çϴµ¥ »ç½Ç ÀÌ ¿¹Á¦¿¡¼­´Â ²À ÇÊ¿äÄ¡ ¾Ê´Ù. ¹«Á¶°Ç PrintCity¸¦ Àç±Í È£ÃâÇØµµ ÀÚ½ÄÀÌ ¾ø´Â ·¹ÄÚµå´Â ºó ·çÇÁ¸¸ µ¹´Ù°¡ ÇêÅÁÄ¡°í µ¹¾Æ¿Ã °ÍÀÌ´Ù. ¾Õ Ç×ÀÇ FileList ¿¹Á¦µµ ¸¶Âù°¡Áö·Î µð·ºÅ丮À̱⸸ ÇÏ¸é ¹«Á¶°Ç Àç±Í È£ÃâÀ» Çߴµ¥ ÀÌ °æ¿ì´Â °¬´Ù°¡ ±×³É µ¹¾Æ¿À´Â ½Ã°£ÀÌ µð·ºÅ丮 ¾È¿¡ ÆÄÀÏÀÌ ÀÖ´ÂÁö °Ë»çÇÏ´Â °Í°ú º°¹Ý Â÷À̰¡ ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¯³ª ±×·¸Áö ¾ÊÀº °æ¿ì´Â ÀÚ½ÄÀ» °¡ÁöÁö ¾ÊÀº Ç׸ñ¿¡ ´ëÇØ¼­´Â °¡±ÞÀû Àç±Í È£ÃâÀ» ÀÚÁ¦ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ÇêÅÁÄ¡°í µ¹¾Æ¿À´Âµ¥µµ ±²ÀåÇÑ ½Ã°£ÀÌ °É¸°´Ù°Å³ª ÀÚ·á¿¡ ¾î¶² º¯ÇüÀ» °¡ÇÏ´Â µ¿ÀÛÀ» ÇÒ °æ¿ì°¡ ÀÌ¿¡ ÇØ´çµÈ´Ù.

PrintCity ÇÔ¼ö´Â ÁöÁ¤ÇÑ ·¹ÄÚµåÀÇ ¸ðµç ÀÚ½Ä(±× ¾Æ·¡ÀÇ ÀڽıîÁö)À» Ãâ·ÂÇϹǷΠmain¿¡¼­´Â ´ëÇѹα¹ ¾Æ·¡¸¦ Ãâ·ÂÇϵµ·Ï PrintCity ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù. ¹°·Ð ¿øÇÑ´Ù¸é ¼­¿ï½Ã ¾Æ·¡ÀÇ ÇàÁ¤¸í¸¸ Ãâ·ÂÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ ÇÔ¼ö´Â ·çÇÁ¸¦ µ¹¸ç Parent ¾Æ·¡ÀÇ ¸ðµç ÀڽĵéÀ» Ãâ·ÂÇ쵂 ÀÚ½ÄÀÌ ÀÖ´Â ·¹ÄÚµå´Â Àç±Í È£ÃâÇÏ¿© ¹®Á¦ÀÇ ¹üÀ§¸¦ Á¡Á¡ Á¼Çô°¡´Â ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. ¸¸¾à Àç±Í È£ÃâÀ» ¾²Áö ¾Ê´Â´Ù¸é ÀÌ ¹®Á¦´Â ´ë´ÜÈ÷ Ç®±â ¾î·Á¿îµ¥ Á÷Á¢ ½ÃµµÇØ º¸¸é ¾Æ¸¶ Àß ¾ÈµÉ °ÍÀÌ´Ù. ³í¸®ÀûÀ¸·Î °¡´ÉÀº ÇÏÁö¸¸ Äڵ尡 ±æ¾îÁö°í ¼Óµµµµ ÀÌ ¿¹Á¦º¸´Ù ´À¸®´Ù.

Àç±Í È£ÃâÀ» ½ÇÁ¦ ¹®Á¦¿¡ Àû¿ëÇÏ´Â ÀϹÝÀûÀÎ ¹ýÄ¢ °°Àº °ÍÀº ¾ø´Ù. ½ÇÁ¦ ¹®Á¦ÀÇ º¹À⼺°ú Ư¼º¿¡ µû¶ó Àü´ÞÇÒ Àμö¿Í ¹ÝȯÁ¡, Áö¿ªº¯¼ö ¸ñ·Ï, ·çÇÁÀÇ ±¸Á¶¸¦ ÀûÀýÇÏ°Ô ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¾î¶² °æ¿ì´Â ¹°¸®ÀûÀÎ ÇѰè·Î ÀÎÇØ Áö¿ªº¯¼ö¸¦ ¸¶À½´ë·Î ¾µ ¼ö ¾ø´Â »óȲµµ ÀÖ´Ù. arCity ¹è¿­Àº ¾ðÁ¦µçÁö ÂüÁ¶ÇÒ ¼ö ÀÖ´Â ¹è¿­ÀÌÁö¸¸ ÀÌ·± µ¥ÀÌÅͰ¡ µ¥ÀÌÅÍ º£À̽º¿¡ ÀúÀåµÇ¾î Àִٰųª ³×Æ®¿öÅ©¸¦ ÅëÇØ Àü¼Û¹Þ´Â °æ¿ì´Â °ªÀ» Àд ¹æ¹ýÀÇ Æ¯¼ºÀ» Àß °í·ÁÇØ¾ß ÇÑ´Ù. arCity°¡ µ¥ÀÌÅÍ º£À̽º¿¡ µé¾î ÀÖ´Ù¸é ÀÌ ÇÔ¼öÀÇ ÇüÅ´ ¾Æ¸¶ ´ÙÀ½°ú °°ÀÌ º¯°æµÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. ÆíÀÇ»ó µé¿©¾²±â ±â´ÉÀº Á¦¿ÜÇϵµ·Ï ÇÏÀÚ.

 

void PrintCity(int Parent)

{

     Parent ¾Æ·¡ÀÇ ÀÚ½Äµé ¸ñ·Ï Á¶»çÇÏ´Â Äõ¸® ½ÇÇà

     for (child=ù°~¸·³») {

          childÀÇ À̸§ Ãâ·Â

          if (childÀÇ ÀÚ½ÄÀÌ ÀÖÀ¸¸é)

              PrintCity(child);

     }

}

 

arCity ¹è¿­À» Àд ´ë½Å Äõ¸®(Query)¹®À¸·Î Á¶°Ç¿¡ ¸Â´Â ·¹Äڵ带 °Ë»öÇϵµ·Ï Çß´Ù. ÀϹÝÀûÀ¸·Î Äõ¸®ÀÇ °á°ú¼ÂÀº µ¥ÀÌÅÍ º£À̽º ¼­¹ö°¡ °¡Áö¹Ç·Î Ŭ¶óÀ̾ðÆ®ÀÇ ÀÔÀå¿¡¼­ °á°ú¼ÂÀº Àü¿ªÀûÀ̶ó´Â Ư¼ºÀÌ ÀÖ´Ù. °á°ú¼ÂÀº ÇÔ¼ö È£Ãâ ÀνºÅϽºº°·Î ½ºÅÿ¡ À¯ÁöµÇÁö ¾ÊÀ¸¸ç Àç±Í È£ÃâµÈ ÇÔ¼ö°¡ »õ·Î¿î Äõ¸®¸¦ ½ÇÇàÇÏ´Â Áï½Ã ÀÌÀü °á°ú¼ÂÀº ÆÄ±«µÇ¾î ¹ö¸°´Ù. PrintCity°¡ Àç±Í È£ÃâµÈ ÈÄ ¸®ÅϵǾúÀ» ¶§ ÇöÀç ÇÔ¼ö´Â °á°ú¼ÂÀ» ÀÒ¾î ¹ö¸®°Ô µÇ°í °è¼ÓÀûÀÎ °Ë»öÀ» ÇÒ ¼ö ¾ø´Ù.

ÀÌ´Â ³×Æ®¿öÅ©¸¦ ÅëÇØ µ¥ÀÌÅ͸¦ Àü¼Û¹ÞÀ» ¶§µµ ¸¶Âù°¡ÁöÀÌ´Ù. ±Ùº»ÀûÀ¸·Î Áö¿ª Äõ¸®³ª Áö¿ª ³×Æ®¿öÅ© Á¢¼ÓÀ̶ó´Â °ÍÀÌ ¾î·Æ±â ¶§¹®¿¡ ÀÌ·± °æ¿ì´Â Äõ¸®¸¦ Çϸ鼭 Àç±Í È£ÃâÀ» ÇÏ´Â °ÍÀÌ ºÒ°¡´ÉÇÏ´Ù. ±×·¡¼­ ÇÑ ¹ø Äõ¸®¸¦ ÇÒ ¶§ ¼­¹ö¿¡ ÀÖ´Â °á°ú¼ÂÀ» Ŭ¶óÀÌ¾ðÆ®·Î ¸ðÁ¶¸® º¹»çÇØ¾ß ÇÏ¸ç »çº»À» ¶á ÈÄ Àç±Í È£ÃâÀ» ÇØ¾ß ¸®ÅÏÇßÀ» ¶§ ´ÙÀ½ °á°ú¼ÂÀ» Á¦´ë·Î ÀÐÀ» ¼ö ÀÖ´Ù.

 

void PrintCity(int Parent)

{

     Parent ¾Æ·¡ÀÇ ÀÚ½Äµé ¸ñ·Ï Á¶»çÇÏ´Â Äõ¸® ½ÇÇà

     °á°ú¼ÂÀÇ °á°ú¸¸Å­ ¹è¿­ ÇÒ´ç ÈÄ »çº» º¹»ç

     for (child=ù°~¸·³») {

          childÀÇ À̸§ Ãâ·Â

          if (childÀÇ ÀÚ½ÄÀÌ ÀÖÀ¸¸é)

              PrintCity(child);

     }

     ¹è¿­ ÇØÁ¦

}

 

°¢ È£Ãâ ÀνºÅϽº´Â Àü¿ª Äû¸®¸¦ »ç¿ëÇ쵂 °á°ú¼ÂÀÇ »çº»À» º°µµÀÇ ¸Þ¸ð¸® °ø°£¿¡ º¹»çÇØ µÐ´Ù. °á°ú¼ÂÀÌ ½ºÅÿ¡ ÀúÀåµÇ´Â Áö¿ªº¯¼ö°¡ ¾Æ´Ï±â ¶§¹®¿¡ °¢ È£Ãâ ÀνºÅϽº¸¶´Ù ¸Þ¸ð¸®¸¦ µ¿ÀûÀ¸·Î ÇÒ´çÇØ¼­ ÀúÀåÇØ¾ß ÇÑ´Ù. Àü¿ªÀûÀÎ Äõ¸® °á°ú¸¦ Áö¿ªÀûÀÎ »çº»À¸·Î ¸¸µé¾î¼­ °¢ ÇÔ¼ö È£Ãâ ÀνºÅϽº°¡ Àڱ⸸ÀÇ °á°ú¼ÂÀ» °¡Áú ¼ö ÀÖµµ·Ï ÇØ ÁÖ´Â °ÍÀÌ´Ù.

CityTree ¿¹Á¦´Â ·¹Äڵ尡 ºÎ¸ð ·¹ÄÚµåÀÇ ¹è¿­»ó ÷ÀÚ¸¦ ±â¾ïÇϴµ¥ ÀÌ ¹æ½ÄÀ» ¾²¸é 1Â÷¿ø ¹è¿­·Î °£ÆíÇÏ°Ô °èÃþ ±¸Á¶¸¦ Ç¥ÇöÇÒ ¼ö ÀÖ°í ÀڽĵéÀÇ ¼ø¼­°¡ ²À Á¤·ÄµÇ¾î ÀÖÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù. ´ë½Å ºÎ¸ð ·¹ÄÚµåÀÇ Ã·ÀÚ¸¦ ±â¾ïÇϰí Àֱ⠶§¹®¿¡ »ðÀÔ, »èÁ¦¿¡ ÀÇÇØ ºÎ¸ðÀÇ Ã·ÀÚ°¡ º¯°æµÉ °æ¿ì ÀڽĵéÀÌ ÂüÁ¶Çϰí ÀÖ´Â ºÎ¸ðÀÇ Ã·ÀÚ¸¦ Á¶Á¤ÇØ ÁÖ¾î¾ß ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é ¹è¿­»óÀÇ Ã·ÀÚ°¡ ¾Æ´Ñ °íÀ¯ÀÇ id¸¦ °¢ Ç׸ñ¿¡ ÇÒ´çÇϰí ÀڽĵéÀº ºÎ¸ðÀÇ id¸¦ °¡¸®Å°µµ·Ï ÇÏ¸é µÈ´Ù. ´ÙÀ½Àº ¼öÁ¤µÈ ¿¹Á¦ÀÌ´Ù.

 

¿¹ Á¦ : CityTree2

#include <Turboc.h>

 

struct tag_City

{

     int id;

     int Parent;

     TCHAR *Name;

};

 

tag_City arCity[]={

     0,-1,"´ëÇѹα¹",

     1,0,"¼­¿ïƯº°½Ã",

     2,1,"µ¿´ë¹®±¸",

     3,2,"û·®¸®µ¿",

     4,2,"ȸ±âµ¿",

     5,2,"½Å¼³µ¿",

     6,1,"ÇѰ­±¸",

     7,6,"Æþ´çµ¿",

     8,6,"¿ùôµ¿",

     9,0,"°æ±âµµ",

     10,9,"È­¼º½Ã",

     11,9,"±Ý¼º½Ã",

     12,9,"¸ñ¼º½Ã",

};

 

BOOL HaveChild(int idx)

{

     int i;

     for (i=0;i<sizeof(arCity)/sizeof(arCity[0]);i++) {

          if (arCity[i].Parent == idx) {

              return TRUE;

          }

     }

     return FALSE;

}

 

void PrintCity(int Parent,int indent)

{

     int i,j;

 

     for (i=0;i<sizeof(arCity)/sizeof(arCity[0]);i++) {

          if (arCity[i].Parent == Parent) {

              for (j=0;j<indent;j++) putch(' ');

              printf("%s\n",arCity[i].Name);

              if (HaveChild(arCity[i].id)) {

                    PrintCity(arCity[i].id,indent+2);

              }

          }

     }

}

 

void main()

{

     PrintCity(-1,0);

}

 

tag_City ¹è¿­¿¡ id ¸â¹ö¸¦ Ãß°¡ÇÏ°í °¢ ¹è¿­ ¿ä¼Ò°¡ Áߺ¹µÇÁö ¾Ê´Â °íÀ¯ÀÇ id¸¦ °¡Áöµµ·Ï Çß´Ù. PrintCity ÇÔ¼ö¿¡¼­ HaveChild¸¦ È£ÃâÇÒ ¶§ ¹è¿­ ÷ÀÚÀÎ i ´ë½Å arCity[i].id¸¦ »ç¿ëÇϸç Àç±Í È£ÃâÀ» ÇÒ ¶§µµ arCity[i].id¸¦ »ç¿ëÇÔÀ¸·Î½á ¹è¿­»óÀÇ ¼ø¼­¿¡ »ó°ü¾øÀÌ °èÃþ ±¸Á¶¸¦ ¼øÈ¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô µÇ¸é ¹è¿­»óÀÇ ¼ø¼­°¡ ¹Ù²î¾îµµ id´Â Ç×»ó ÀÏÁ¤ÇϹǷΠÇ׸ñÀÇ ¼ø¼­´Â ¾Æ¹« Àǹ̰¡ ¾ø¾îÁø´Ù. ´ÙÀ½°ú °°ÀÌ arCity ¹è¿­À» ¸¶±¸ µÚ¼¯¾î ³õ°í ½ÇÇàÇØµµ °á°ú´Â µ¿ÀÏÇÏ´Ù.

 

tag_City arCity[]={

     4,2,"ȸ±âµ¿",

     10,9,"È­¼º½Ã",

     11,9,"±Ý¼º½Ã",

     5,2,"½Å¼³µ¿",

     1,0,"¼­¿ïƯº°½Ã",

     2,1,"µ¿´ë¹®±¸",

     12,9,"¸ñ¼º½Ã",

     3,2,"û·®¸®µ¿",

     7,6,"Æþ´çµ¿",

     8,6,"¿ùôµ¿",

     0,-1,"´ëÇѹα¹",

     9,0,"°æ±âµµ",

     6,1,"ÇѰ­±¸",

};

 

Ç׸ñ³¢¸® id°¡ Áߺ¹µÇÁö ¾Ê°í ÀڽĵéÀÌ ºÎ¸ðÀÇ id¸¦ Á¦´ë·Î °¡¸®Å°°í¸¸ ÀÖÀ¸¸é ¹è¿­»óÀÇ ¼ø¼­°¡ ¹Ù²î¾îµµ id´Â Ç×»ó ÀÏÁ¤ÇϹǷΠÇ׸ñÀÇ Ãß°¡, »èÁ¦, À̵¿ÀÌ ÀÚÀ¯·Ó´Ù. ÀÌ ¹æ½Ä´ë·Î¶ó¸é ½ÇÇàÁß¿¡ Æ®¸®¸¦ ÆíÁýÇÒ ¼öµµ ÀÖ´Ù. ¹è¿­»óÀÇ Ã·ÀÚ¸¦ ºÎ¸ðÀÇ id·Î »ç¿ëÇÏ´Â ¹æ¹ýÀº ±¸Á¶°¡ °£ÆíÇϹǷΠ¿ìÆí¹øÈ£ºÎ°°ÀÌ º¯°æµÇÁö ¾Ê´Â Á¤ÀûÀÎ Æ®¸®¸¦ Ç¥ÇöÇϴµ¥ ÀûÇÕÇÏ¸ç º°µµÀÇ id¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº ȸ»ç Á¶Á÷µµ³ª µð·ºÅ丮¿Í ÆÄÀÏ °èÃþ°°Àº µ¿ÀûÀÎ Æ®¸®¸¦ °ü¸®Çϴµ¥ ÀûÇÕÇÏ´Ù.