Êý¾Ý½á¹¹ÊµÑ鱨¸æ·¶Àý ÏÂÔر¾ÎÄ

¡¶Êý¾Ý½á¹¹ÓëËã·¨¡·ÊµÑ鱨¸æ

רҵ

°à¼¶

ÐÕÃû

ѧºÅ

ʵÑéÏîÄ¿

ʵÑéÒ» ¶þ²æÊ÷µÄÓ¦ÓÃ

ʵÑéÄ¿µÄ

1¡¢½øÒ»²½ÕÆÎÕÖ¸Õë±äÁ¿µÄº¬Òå¼°Ó¦Óá£

2¡¢ÕÆÎÕ¶þ²æÊ÷µÄ½á¹¹ÌØÕ÷£¬ÒÔ¼°¸÷ÖÖ´æ´¢½á¹¹µÄÌص㼰ʹÓ÷¶Î§¡£ 3¡¢ÕÆÎÕÓÃÖ¸ÕëÀàÐÍÃèÊö¡¢·ÃÎʺʹ¦Àí¶þ²æÊ÷µÄÔËËã¡£

ʵÑéÄÚÈÝ

ÌâÄ¿1:±àдһ¸ö³ÌÐò£¬²ÉÓÃÒ»¿Ã¶þ²æÊ÷±íʾһ¸ö¼ÒÆ×¹Øϵ¡£ÒªÇó³ÌÐò¾ßÓÐÈçϹ¦ÄÜ£º £¨1£©ÓÃÀ¨ºÅ±íʾ·¨Êä³ö¼ÒÆ׶þ²æÊ÷£¬ £¨2£©²éÕÒijÈ˵ÄËùÓжù×Ó£¬ £¨3£©²éÕÒijÈ˵ÄËùÓÐ×æÏÈ¡£

Ëã·¨Éè¼Æ·ÖÎö

£¨Ò»£©Êý¾Ý½á¹¹µÄ¶¨Òå

ΪÁËÄܹ»Óöþ²æÊ÷±íʾÅäż¡¢×ÓÅ®¡¢ÐÖµÜÈýÖÖ¹Øϵ£¬ÌزÉÓÃÒÔÏ´洢¹Øϵ£¬ÔòÄÜÔÚ¶þ²æÊ÷ÉÏʵÏÖ¼ÒÆ׵ĸ÷ÏîÔËËã¡£

¸¸ ÆÞ ×Ó1 ×ÓÆÞ1 Ëï1 ×ÓÆÞ2 Ëï2 ×Ó2

¶þ²æÊ÷ÐÍ´æ´¢½á¹¹¶¨ÒåΪ£º typedef struct SNODE {char name[MAX]; //ÈËÃû

struct SNODE *left; //Ö¸ÏòÅäż½áµã

struct SNODE *right; //Ö¸ÏòÐֵܻò×ÓÅ®½áµã }FNODE; £¨¶þ£©×ÜÌåÉè¼Æ

ʵÑéÓÉÖ÷º¯Êý¡¢¼ÒÆ×½¨Á¢º¯Êý¡¢¼ÒÆ×Êä³öº¯Êý¡¢¶ù×Ó²éÕÒº¯Êý¡¢×æÏȲéÕÒº¯Êý¡¢½áµã¶¨Î»º¯Êý¡¢Ñ¡Ôñ½çÃ溯ÊýÆ߸öº¯Êý¹²Í¬×é³É¡£Æ书ÄÜÃèÊöÈçÏ£º £¨1£©Ö÷º¯Êý£ºÍ³³ïµ÷Óø÷¸öº¯ÊýÒÔʵÏÖÏàÓ¦¹¦ÄÜ void main()

£¨2£©¼ÒÆ×½¨Á¢º¯Êý£ºÓëÓû§½»»¥½¨Á¢¼Ò×å³ÉÔ±¶ÔÓ¦¹Øϵ void InitialFamily(FNODE *&head) //¼ÒÆ×½¨Á¢º¯Êý £¨3£©¼ÒÆ×Êä³öº¯Êý£ºÓÃÀ¨ºÅ±íʾ·¨Êä³ö¼ÒÆ× Êä³öÐÎʽΪ£º¸¸ºÍĸ£¨×Ó1ºÍ×ÓÆÞ1£¨Ëï1£©£¬×Ó2ºÍ×ÓÆÞ2£¨Ëï2£©£© void PrintFamily(FNODE *head) //¼ÒÆ×Êä³öº¯Êý

2

£¨4£©¶ù×Ó²éÕÒº¯Êý£ºÔÚ¼ÒÆ×ÖвéÕÒµ½Ä³ÈËËùÓеÄ×ÓÅ®²¢Êä³ö£¬Í¬Ê±Ò²Äܱæ±ð³öÆäÊÇ·ñΪ¼Ò×å³ÉÔ±ÓëÊÇ·ñÓÐ×ÓÅ®

void FindSon(FNODE *b,char p[]) //¶ù×Ó²éÕÒº¯Êý

£¨5£©×æÏȲéÕÒº¯Êý£ºÔÚ¼ÒÆ×ÖвéÕÒµ½Ä³ÈËËùÓеÄ×æÏȲ¢Êä³ö£¬Í¬Ê±Ò²Äܱæ±ð³öÆäÊÇ·ñΪ¼Ò×åÖгÉÔ±¡£

int FindAncestor(FNODE *head,char son[ ]) //×æÏȲéÕÒº¯Êý £¨6£©½áµã¶¨Î»º¯Êý£ºÔÚ¼ÒÆ×ÖÐÕÒµ½Óû§ÊäÈëÈËÃûËù¶ÔÓ¦µÄ½áµã¡£ FNODE *findnode(FNODE *b,char p[]) //½áµã¶¨Î»º¯Êý

£¨7£©Ñ¡Ôñ½çÃ溯Êý£ºÎª±ãÓÚ±àд³ÌÐò£¬½«Óû§Ñ¡Ôñ²¿·Ö¶ÀÁ¢Îª´Ëº¯Êý¡£ void PRINT(int &n) £¨Èý£©¸÷º¯ÊýµÄÏêϸÉè¼Æ£º

void InitialFamily(FNODE *&head) //¼ÒÆ×½¨Á¢º¯Êý

1£ºÊ×ÏȽ¨Á¢µ±Ç°È˵ÄÐÅÏ¢£¬½«Æä×óÓÒ½áµãÖÃΪ¿Õ£¬

2£ºÈ»ºóÈÃÓû§È·¶¨ÆäÊÇ·ñÓÐÅäż£¬Èç¹ûûÓÐÅäż£¬Ôòµ±Ç°³ÌÐò½áÊø£¬ 3£ºÈç¹ûÓÐÔò½¨Á¢ÆäÅäżÐÅÏ¢£¬²¢½«Åäż½áµã¸³¸øµ±Ç°È˵Ä×ó½áµã£»

4£ºÔÙÈÃÓû§È·¶¨ÆäÊÇ·ñÓÐ×ÓÅ®£¬Èç¹ûÓÐÔòµÝ¹éµ÷ÓüÒÆ×½¨Á¢º¯Êý½¨Á¢×ÓÅ®½áµã£¬²¢½«Æ丳¸øÅäż½áµãµÄÏÂÒ»¸öÓÒ½áµã¡£ 5£ºÈçÎÞ£¬Ôò³ÌÐò½áÊø

void PrintFamily(FNODE *head) //¼ÒÆ×Êä³öº¯Êý

1£ºÊ×ÏÈÅжϵ±Ç°½áµãÊÇ·ñΪ¿Õ£¬Èç¹ûΪ¿ÕÔò½áÊø³ÌÐò£» 2£ºÈç¹û²»Îª¿Õ£¬ÔòÊä³öµ±Ç°½áµãÐÅÏ¢£¬

3£ºÈ»ºóÅжÏÆä×ó½áµã£¨Åäż½áµã£©ÊÇ·ñΪ¿Õ£¬È粻Ϊ¿ÕÔòÊä³ö¡°ºÍÅäżÐÅÏ¢¡£

4£ºÔÙÅжÏÅäż½áµãµÄÓÒ½áµãÊÇ·ñΪ¿Õ£¬È粻Ϊ¿ÕÔòµÝ¹éµ÷ÓÃÊä³öÆä×ÓÅ®ÐÅÏ¢£¬×îºóÊä³ö¡°£©¡±£»

5£ºµ±Åäż½áµãΪ¿Õʱ£¬ÔòÅжÏÆäÓÒ½áµã£¨Ðֵܽáµã£©ÊÇ·ñΪ¿Õ 6£ºÈç¹û²»Îª¿Õ£¬ÔòÊä³ö¡°£¬¡±£¬²¢µÝ¹éµ÷ÓÃÊä³öÐÖµÜÐÅÏ¢ 7³ÌÐò½áÊø

FNODE *findnode(FNODE *b,char p[]) //½áµã¶¨Î»º¯Êý 1£ºµ±Ç°½áµãÊÇ·ñΪ¿Õ£¬Îª¿ÕÔò·µ»Ø¿Õ£» 2£ºÈç¹ûºÍ²éÕÒÐÅÏ¢Ïàͬ£¬Ôò·µ»Øµ±Ç°½áµã£»

3£ºÈ粻Ȼ£¬ÔòÏȺóµÝ¹é·ÃÎÊÆä×ó½áµã£¬ÔÙ²»ÊÇÔòµÝ¹é·ÃÎÊÓÒ½áµã void FindSon(FNODE *b,char p[]) //¶ù×Ó²éÕÒº¯Êý

1£ºÔÚ¼ÒÆ×Öж¨Î»µ½Òª²éÕҵĽáµã£¬ÈçÎÞÔòÊä³ö¡°²éÕÒ²»µ½´ËÈË¡± 2£ºÅжÏÆäÅäż½áµãÓë×ÓÅ®½áµãÊÇ·ñΪ¿Õ£¬Îª¿ÕÔòÊä³ö¡°ÎÞ×ÓÅ®¡± 3£º²»Îª¿ÕÔòÊä³öÆäÅäż½áµãµÄËùÓÐÓÒ½áµã£¨×ÓÅ®½áµã£©¡£ int FindAncestor(FNODE *head,char son[ ]) //×æÏȲéÕÒº¯Êý

1£ºÏÈÔÚ¼ÒÆ×Öж¨Î»µ½Òª²éÕҵĽáµã£¬ÈçΪ¿ÕÊä³ö¡°²»´æÔÚ´ËÈË¡±£¬³ÌÐò½áÊø 2£ºÏȽ«¸¸Ä¸½áµãÈëÕ»£¬µ±Õ»Îª¿Õʱ³ÌÐò½áÊø£¬ 3£ºÕ»²»Îª¿Õʱ£¬ÅжÏÕ»¶¥ÔªËØÊÇ·ñÒÑ·ÃÎʹý£¬

4£º·ÃÎʹý£¬ÔÙÅжÏÊÇ·ñΪ²éÕÒ½áµã£¬ÈçÊÇÔòÊä³öÕ»Öб£´æµÄÆä×æÏȽáµã£¬²¢Â˹ýÆäÐֵܽáµã²»Êä³ö£»²»ÊDzéÕÒ½áµã£¬ÔòÍËÕ»Ò»¸öÔªËØ

5£ºÎ´·ÃÎʹý£¬ÔòÈ¡µ±Ç°Õ»¶¥ÔªËØ£¬Ö÷ÃÎʱêÖ¾¡ª¡ª1£¬Í¬Ê±È¡ÆäÓÒ½áµã 6£ºÕ»²»Îª¿Õ»òµ±Ç°ËùÈ¡½áµã²»Îª¿Õʱ£¬×ªµ½2£»

ʵÑé²âÊÔ½á¹û¼°½á¹û·ÖÎö

3

£¨Ò»£©²âÊÔ½á¹û

£¨¶þ£©½á¹û·ÖÎö £¨ÂÔ£©

4

ʵÑé×ܽá

£¨ÂÔ£©

¸½Â¼ ʵÑé³ÌÐò´úÂë(¸Ã²¿·ÖÇë¼Ó×¢ÊÍ)

/*³ÌÐò¶¨Ò岿·Ö£º*/ #include #include #include #define MAX 20

typedef struct SNODE {

char name[MAX]; //ÈËÃû

struct SNODE *left; //Ö¸ÏòÅäż½áµã

struct SNODE *right; //Ö¸ÏòÐֵܻò×ÓÅ®½áµã

}FNODE;

/*¼ÒÆ×½¨Á¢º¯Êý*/

void InitialFamily(FNODE *&head) {

FNODE *s,*r,*q; int tag;

q=(FNODE *)malloc(sizeof(FNODE)); q=NULL;

s=(FNODE *)malloc(sizeof(FNODE)); printf(\ÊäÈëÐÕÃû:\\n\ scanf(\£¬,s->name); s->left=s->right=NULL; head=r=s; printf(\ÊÇ·ñÓÐÅäż?ÓÐ 1,ÎÞ 0\\n\ //½¨Á¢Åäż½áµã scanf(\ if(tag) { s=(FNODE *)malloc(sizeof(FNODE)); printf(\ÊäÈëÆäÅäżÐÕÃû:\\n\ scanf(\ s->left=s->right=NULL; r->left=s; r=s; do{ //µÝ¹éµ÷Óý¨Á¢º¢×Ó½áµã printf(\ÊÇ·ñ»¹ÓÐ×ÓÅ®?ÓÐ 1,ÎÞ 0\\n\ scanf(\ if(tag) { InitialFamily(q);

5

r->right=q; r=q; } }while(tag); } }

/*¼ÒÆ×Êä³ö²¿·Ö*/

void PrintFamily(FNODE *head) {

FNODE *s; if(head!=NULL) { printf(\ //²»Îª¿ÕʱÊä³öµ±Ç°½áµã if(head->left!=NULL) //Êä³öÅäż½áµã {

s=head->left; printf(\ºÍ%s(\ PrintFamily(s->right); //µÝ¹éµ÷ÓÃÊä³öº¢×Ó½áµã printf(\ } if(head->right!=NULL) //µÝ¹éµ÷ÓÃÊä³öÐֵܽáµã {

printf(\ PrintFamily(head->right); } } }

/*½áµã¶¨Î»º¯Êý*/

FNODE *findnode(FNODE *b,char p[]) //ÔÚ¼ÒÆ×Öж¨Î»ËùÒª²éÕÒ½áµã { FNODE *q; if(b==NULL) return NULL; else if(!strcmp(b->name,p)) //Èç¹ûÓë²éÕÒÈËÃûÏàͬÔò·µ»Ø¸Ã½áµã return b; else { q=findnode(b->left,p); //·ñÔòµÝ¹éµ÷ÓÃÆä×ó½áµã if(q!=NULL) return q; else return(findnode(b->right,p)); //µÝ¹éµ÷ÓÃÓÒ½áµã }

6