Êý¾Ý½á¹¹ÓëËã·¨¡ª¡ªÊ÷Óë¶þ²æÊ÷ƪÏê½â

ÉÏһƪ / ÏÂһƪ  2023-10-20 12:36:09

¡¡¡¡Ä¿ ¼
¡¡¡¡1. Ê÷Óë¶þ²æÊ÷
¡¡¡¡¡¡1.1 Ê÷µÄ»ù±¾¸ÅÄî
¡¡¡¡¡¡¡¡1.1.1 Ê÷µÄ¶¨Òå
¡¡¡¡¡¡¡¡1.1.2 Ê÷µÄ³£ÓÃÊõÓï
¡¡¡¡¡¡1.2 ¶þ²æÊ÷µÄ¸ÅÊö
¡¡¡¡¡¡¡¡1.2.1 »ù±¾¸ÅÄî
¡¡¡¡¡¡¡¡1.2.2 Âú¶þ²æÊ÷¶¨Òå
¡¡¡¡¡¡¡¡1.2.3 ÍêÈ«¶þ²æÊ÷¶¨Òå
¡¡¡¡¡¡¡¡1.2.4 µ¥·ÖÖ§Ê÷µÄ¶¨Òå
¡¡¡¡¡¡¡¡1.2.5 ¶þ²æÊ÷µÄÌØÐÔ
¡¡¡¡¡¡¡¡¡¡1£©ÌØÐÔ1£ºi²ã×î¶à½áµãÊý 2^i
¡¡¡¡¡¡¡¡¡¡2£©ÌØÐÔ2£º×î¶à½áµã¸öÊý 2^h-1
¡¡¡¡¡¡¡¡¡¡3£©ÌØÐÔ3£ºÒ¶×Ó½áµã¹Øϵ n_0 = n_2 + 1
¡¡¡¡¡¡¡¡¡¡4£©ÌØÐÔ4£ºÉî¶È ?log2n? + 1
¡¡¡¡¡¡¡¡¡¡5£©ÌØÐÔ5£ºÅжÏÊÇ·ñ
¡¡¡¡¡¡¡¡1.2.6 ´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡1£©Ë³Ðò´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡2£©Á´Ê½´æ´¢½á¹¹
¡¡¡¡¡¡1.3 ¶þ²æÊ÷µÄ±éÀú
¡¡¡¡¡¡¡¡1.3.1 ¸ÅÊö
¡¡¡¡¡¡¡¡1.3.2 ±éÀú·½Ê½¡¾Öص㡿
¡¡¡¡¡¡¡¡¡¡1£© ²ã´Î±éÀú
¡¡¡¡¡¡¡¡¡¡2£©Ïȸù£¨Ðò£©±éÀú DLR
¡¡¡¡¡¡¡¡¡¡3£©Öиù£¨Ðò£©±éÀú LDR
¡¡¡¡¡¡¡¡¡¡4£©ºó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡¡¡¡¡¡¡5£©Á·Ï°
¡¡¡¡¡¡¡¡1.3.3 ±éÀú·½Ê½£ºµÝ¹éʵÏÖ¡¾Öص㡿
¡¡¡¡¡¡¡¡¡¡1£©Ëã·¨£ºÏȸù£¨Ðò£©±éÀú DLR
¡¡¡¡¡¡¡¡¡¡2£©Ëã·¨£ºÖиù£¨Ðò£©±éÀú LDR
¡¡¡¡¡¡¡¡¡¡3£©Ëã·¨£ººó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡¡¡¡¡¡¡4£©¶¯»­ÑÝʾ£ººó¸ù±éÀú
¡¡¡¡¡¡¡¡1.3.4 ±éÀú·½Ê½£º·ÇµÝ¹éʵÏÖ
¡¡¡¡¡¡¡¡¡¡1£©·ÖÎö£ºÏȸù£¨Ðò£©±éÀú DLR
¡¡¡¡¡¡¡¡¡¡2£©Ëã·¨£ºÏȸù£¨Ðò£©±éÀú DLR¡¾Öص㡿
¡¡¡¡¡¡¡¡¡¡3£©·ÖÎö£ºÖиù£¨Ðò£©±éÀú LDR
¡¡¡¡¡¡¡¡¡¡4£©Ëã·¨£ºÖиù£¨Ðò£©±éÀú LDR£¨Á˽⣩
¡¡¡¡¡¡¡¡¡¡5£©·ÖÎö£ººó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡¡¡¡¡¡¡6£©Ëã·¨£ººó¸ù£¨Ðò£©±éÀúLRD£¨Á˽⣩
¡¡¡¡¡¡1.4 ½¨Á¢¶þ²æÊ÷
¡¡¡¡¡¡¡¡1.4.1 ·½Ê½
¡¡¡¡¡¡¡¡1.4.2 ÓÉÏȸùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷¡¾Öص㡿
¡¡¡¡¡¡¡¡¡¡1£©ÏȸùºÍÖиùÔ­Àí
¡¡¡¡¡¡¡¡¡¡2£©ÊµÀý·ÖÎö
¡¡¡¡¡¡¡¡¡¡3£©Á·Ï°
¡¡¡¡¡¡¡¡¡¡4£©Ëã·¨
¡¡¡¡¡¡¡¡1.4.3 Óɺó¸ùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷¡¾Öص㡿
¡¡¡¡¡¡¡¡¡¡1£©ºó¸ùºÍÖиùÔ­Àí
¡¡¡¡¡¡¡¡¡¡2£©Á·Ï°
¡¡¡¡¡¡¡¡1.4.4 ÓɱêÃ÷¿Õ×ÓÊ÷µÄÏȸù±éÀú½¨Á¢¶þ²æÊ÷
¡¡¡¡¡¡¡¡¡¡1£©¸ÅÊö
¡¡¡¡¡¡¡¡¡¡2£©Ëã·¨
¡¡¡¡¡¡¡¡1.4.5 ÓÉÍêÈ«¶þ²æÊ÷µÄ˳Ðò´æ´¢½á¹¹½¨Á¢¶þ²æÁ´Ê½´æ´¢½á¹¹
¡¡¡¡¡¡1.5 ¹þ·òÂüÊ÷¼°¹þ·òÂü±àÂë
¡¡¡¡¡¡¡¡1.5.1 »ù±¾¸ÅÄî
¡¡¡¡¡¡¡¡1.5.2 ×îÓŶþ²æÊ÷£¨¹þ·òÂüÊ÷£©¡¾Öص㡿
¡¡¡¡¡¡¡¡1.5.3 ¹¹½¨¹þ·òÂüÊ÷¡¾Öص㡿
¡¡¡¡¡¡¡¡1.5.4 ¹þ·òÂü±àÂ롾Öص㡿
¡¡¡¡¡¡¡¡1.5.5 ¹þ·òÂü±àÂëÀà
¡¡¡¡¡¡1.6 Ê÷ÓëÉ­ÁÖ
¡¡¡¡¡¡¡¡1.6.1 ת»»¸ÅÊö
¡¡¡¡¡¡¡¡1.6.2 Ê÷ת»»³É¶þ²æÊ÷
¡¡¡¡¡¡¡¡1.6.3 ¶þ²æÊ÷ת»»³ÉÊ÷
¡¡¡¡¡¡¡¡1.6.4 É­ÁÖÓë¶þ²æÊ÷»¥×ª
¡¡¡¡¡¡¡¡1.6.5 Ê÷µÄ´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡1£©Ë«Ç×Á´±í´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡2£©º¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡3£©Ë«Ç׺¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡¡¡¡¡¡¡4£©º¢×ÓÐÖµÜÁ´±í´æ´¢½á¹¹£¨ÖصãÕÆÎÕ£©
¡¡¡¡¡¡¡¡1.6.6 Ê÷µÄ±éÀú
¡¡¡¡¡¡¡¡¡¡1£©Ïȸù±éÀú
¡¡¡¡¡¡¡¡¡¡2£©ºó¸ù±éÀú
¡¡¡¡¡¡¡¡¡¡3£©²ã´Î±éÀú
¡¡¡¡¡¡¡¡1.6.7 É­ÁֵıéÀú
¡¡¡¡¡¡¡¡¡¡1£©Ïȸù±éÀú
¡¡¡¡¡¡¡¡¡¡2£©ºó¸ù±éÀú
¡¡¡¡¡¡¡¡¡¡3£©²ã´Î±éÀú
¡¡¡¡¡¡¡¡¡¡ºó¼Ç
¡¡¡¡1. Ê÷Óë¶þ²æÊ÷
¡¡¡¡Ê÷ÐνṹÊÇÒ»Öַdz£ÖØÒªµÄ·ÇÏßÐԽṹ£¬Ê÷ÐνṹÖÐÊý¾ÝÔªËØÖ®¼ä¾ßÓÐÒ»¶Ô¶àµÄÂß¼­¹Øϵ¡£
¡¡¡¡1.1 Ê÷µÄ»ù±¾¸ÅÄî
¡¡¡¡1.1.1 Ê÷µÄ¶¨Òå
¡¡¡¡¡¤ Ê÷ÊÇÓÉn(n>=0)¸ö½áµãËù¹¹³ÉµÄÓÐÏÞ¼¯ºÏ
¡¡¡¡  - µ±n=0ʱ£¬³ÆΪ¿ÕÊ÷
¡¡¡¡  - µ±n>0ʱ£¬n¸ö½áµãÂú×ãÒÔÏÂÌõ¼þ
¡¡¡¡     ¡¤ ÓÐÇÒ½öÓÐÒ»¸ö³ÆΪ¸ùµÄ½áµã
¡¡¡¡     ¡¤ ÆäÓà½áµã¿É·ÖΪm¸ö»¥²»ÏཻµÄÓÐÏÞ¼¯ºÏ£¬ÇÒÿһ¸ö¼¯ºÏÓÖ¹¹³ÉÒ»¿ÃÊ÷£¬¸ÃÊ÷³ÆΪ¸ù½ÚµãµÄ×ÓÊ÷¡£
¡¡¡¡¡¤ ¶ÔÓÚÒ»¿Å·Ç¿ÕÊ÷£¬ÆäÖÐÓÐÇÒ½öÓÐÒ»¸öûÓÐÇ°ÇýµÄ½áµã£¬Õâ¸ö½áµã¾ÍÊǸù½Úµã£¬ÆäÓà½áµãÓÐÇÒ½öÓÐÒ»¸öÇ°Çý£¬µ«¿ÉÒÔÓжà¸öºó¼Ì¡£
¡¡¡¡¡¤ Ê÷µÄ±íʾ·¨£ºÊ÷Ðαíʾ·¨¡¢ÎÄÊÏͼ±íʾ·¨¡¢°¼Èëͼ±íʾ·¨ºÍ¹ãÒå±í(À¨ºÅ)±íʾ·¨
¡¡¡¡  - Ê÷Ðαíʾ·¨
¡¡¡¡  - ÎÄÊÏͼ±íʾ·¨
¡¡¡¡  - °¼Èëͼ±íʾ·¨
¡¡¡¡  - ¹ãÒå±í(À¨ºÅ)±íʾ·¨
¡¡¡¡1.1.2 Ê÷µÄ³£ÓÃÊõÓï
¡¡¡¡1.2 ¶þ²æÊ÷µÄ¸ÅÊö
¡¡¡¡1.2.1 »ù±¾¸ÅÄî
¡¡¡¡¶þ²æÊ÷ÊÇÒ»¸öÌØÊâµÄÊ÷£¬Ã¿¸ö½áµã×î¶àÖ»ÓÐÁ½¿Ã×ÓÊ÷£¬ÇÒÁ½¿Ã×ÓÊ÷Ò²ÊǶþ²æÊ÷¡£
¡¡¡¡¾«È·¶¨Ò壺¶þ²æÊ÷ÊÇÓÉn£¨n>=0)¸ö½áµãËù¹¹³ÉµÄÓÐÏÞ¼¯ºÏ¡£µ±n=0ʱ£¬Õâ¸ö¼¯ºÏΪ¿Õ£¬´Ëʱ¶þ²æÊ÷Ϊ¿ÕÊ÷£¬µ±n>0ʱ£¬Õâ¸ö¼¯ºÏÊÇÓÉÒ»¸ö¸ù½áµãºÍÁ½¸ö»¥²»ÏཻµÄ·Ö±ð³ÆΪ×ó×ÓÊ÷ºÍÓÒ×ÓÊ÷µÄ¶þ²æÊ÷¹¹³É¡£
¡¡¡¡¶þ²æÊ÷µÄÁ½¿Ã×ÓÊ÷ÓÐ×óÓÒÖ®·Ö£¬ËùÒÔ¶þ²æÊ÷ÊÇÓÐÐòÊ÷¡£
¡¡¡¡¶þ²æÊ÷µÄ5ÖÖ»ù±¾ÐÎ̬£º¿ÕÊ÷¡¢Ö»Óиù½áµã¡¢Ö»ÓÐ×ó×ÓÊ÷¡¢Ö»ÓÐÓÒ×ÓÊ÷¡¢¼ÈÓÐ×ó×ÓÊ÷ÓÖÓÐÓÒ×ÓÊ÷¡£
¡¡¡¡1.2.2 Âú¶þ²æÊ÷¶¨Òå
¡¡¡¡Âú¶þ²æÊ÷ÊǶþ²æÊ÷µÄÒ»ÖÖÌØÊâÇé¿ö¡£
¡¡¡¡Èç¹ûÔÚÒ»¿Ã¶þ²æÊ÷ÖУ¬ËüµÄËùÓнáµã»òÕßÒ¶½áµã£¬»òÕßÊÇ×ó¡¢ÓÒ×ÓÊ÷¶¼·Ç¿Õ£¬²¢ÇÒËùÓÐÒ¶½áµã¶¼ÔÚͬһ²ãÉÏ£¬Ôò³ÆÕâ¿Ã¶þ²æÊ÷ΪÂú¶þ²æÊ÷¡£
¡¡¡¡1.2.3 ÍêÈ«¶þ²æÊ÷¶¨Òå
¡¡¡¡Èç¹ûÔÚÒ»¿Ã¾ßÓÐn¸ö½áµãµÄ¶þ²æÊ÷ÖУ¬ËüµÄÂß¼­½á¹¹ÓëÂú¶þ²æÊ÷µÄÇ°n¸ö½áµãµÄÂß¼­½á¹¹Ïàͬ£¬Ôò³ÆÕâÑùµÄ¶þ²æÊ÷ΪÍêÈ«¶þ²æÊ÷¡£
¡¡¡¡1.2.4 µ¥·ÖÖ§Ê÷µÄ¶¨Òå
¡¡¡¡×óÖ§Ê÷£ºËùÓнáµã¶¼Ã»ÓÐÓÒº¢×ӵĶþ²æÊ÷¡£
¡¡¡¡ÓÒÖ§Ê÷£ºËùÓнáµã¶¼Ã»ÓÐ×óº¢×ӵĶþ²æÊ÷¡£
¡¡¡¡1.2.5 ¶þ²æÊ÷µÄÌØÐÔ
¡¡¡¡1£©ÌØÐÔ1£ºi²ã×î¶à½áµãÊý 2^i
¡¡¡¡¶þ²æÊ÷ÖеÚi(i>=0)²ãÉϵĽáµãÊý×î¶àΪ2^i
¡¡¡¡2£©ÌØÐÔ2£º×î¶à½áµã¸öÊý 2^h-1
¡¡¡¡Éî¶ÈΪh(h>=1)µÄ¶þ²æÊ÷ÖÐ×î¶àÓÐ2^h-1¸ö½áµã
¡¡¡¡3£©ÌØÐÔ3£ºÒ¶×Ó½áµã¹Øϵ n_0 = n_2 + 1
¡¡¡¡¶ÔÓÚÈÎÒâÒ»¿Å¶þ²æÊ÷£¬ÈôÆäÒ¶½áµãµÄ¸öÊýΪn_0£¬¶ÈΪ2µÄ½áµã¸öÊýΪn_2£¬ÔòÓÐn_0=n_2+1
¡¡¡¡ÑéÖ¤1£º
¡¡¡¡ÑéÖ¤2£º
¡¡¡¡Ö¤Ã÷£º
¡¡¡¡4£©ÌØÐÔ4£ºÉî¶È [log2n] + 1
¡¡¡¡¾ßÓÐn¸ö½áµãµÄÍêÈ«¶þ²æÊ÷µÄÉî¶ÈΪ[log2n] + 1 »ò [log2(n+1)]
¡¡¡¡Êýѧ³£Ê¶
¡¡¡¡ÏòÏÂÈ¡ÕûµÄÔËËã³ÆΪFloor£¬ÓÃÊýѧ·ûºÅ? ?±íʾ£»ÏòÉÏÈ¡ÕûµÄÔËËã³ÆΪCeiling£¬ÓÃÊýѧ·ûºÅ⌈ ⌉±íʾ
¡¡¡¡ÀýÈ磺

¡¡¡¡⌊59/60⌋=0
¡¡¡¡⌈59/60⌉=1
¡¡¡¡⌊-59/60⌋=-1
¡¡¡¡⌈-59/60⌉=0

¡¡¡¡5£©ÌØÐÔ5£ºÅжÏÊÇ·ñ
¡¡¡¡Èô¶Ôº¬n¸ö½áµãµÄÍêÈ«¶þ²æÊ÷´ÓÉϵ½ÏÂÇÒ´Ó×óÖÁÓÒ½øÐÐ0ÖÁn-1µÄ±àºÅ£¬Ôò¶ÔÍêÈ«¶þ²æÊ÷ÖÐÈÎÒâÒ»¸ö±àºÅΪ1µÄ½áµãÓУº
¡¡¡¡1. Èôi=0£¬Ôò¸Ã½áµãÊǶþ²æÊ÷µÄ¸ù£¬ÎÞË«Ç×£¬·ñÔò±àºÅΪ(i-1)/2µÄ½áµãΪÆäË«Ç×½áµã¡£
¡¡¡¡2. Èô2i+1>=n£¬Ôò¸Ã½áµãÎÞ×óº¢×Ó£¬·ñÔò£¬±àºÅΪ2i+1µÄ½áµãΪÆä×óº¢×Ó½áµã
¡¡¡¡3. Èç¹û2i+2>=n£¬Ôò¸Ã½áµãÎÞÓÒº¢×Ó½áµã£¬·ñÔò£¬±àºÅΪ2i+2µÄ½áµãΪÆäÓÒº¢×Ó½áµã¡£
¡¡¡¡1.2.6 ´æ´¢½á¹¹
¡¡¡¡1£©Ë³Ðò´æ´¢½á¹¹
¡¡¡¡ÍêÈ«¶þ²æÊ÷´æ´¢£º
¡¡¡¡ÓÃÒ»×éµØÖ·Á¬ÐøµÄ´æ´¢µ¥Ôª´Ó¸ù½áµã¿ªÊ¼ÒÀ´Î×ÔÉ϶øÏ£¬²¢°´²ã´Î´Ó×óµ½ÓÒ´æ´¢ÍêÈ«¶þ²æÊ÷Éϵĸ÷½ÚµãÔªËØ£¬¼´½«ÍêÈ«¶þ²æÊ÷±àºÅΪiµÄ½áµãÔªËØ´æ´¢ÔÚϱêΪiÊý×éÔªËØÖС£
¡¡¡¡·ÇÍêÈ«¶þ²æÊ÷£º
¡¡¡¡ÏÈÔÚÊ÷ÖÐÔö¼ÓһЩ²¢²»´æÔÚµÄÐé½áµã²¢Ê¹Æä³ÉΪһ¿ÃÍêÈ«¶þ²æÊ÷£¬È»ºóÓÃÓëÍêÈ«¶þ²æÊ÷ÏàͬµÄ·½·¨¶Ô½áµã½øÐбàºÅ£¬ÔÙ½«±àºÅΪiµÄ½áµãµÄÖµ´æ·Åµ½Êý×éϱêΪiµÄÊý×éµ¥ÔªÖУ¬Ðé½áµã²»´æ·ÅÈκÎÖµ¡£
¡¡¡¡Ë³Ðò´æ´¢ÊÊÓÃÓÚÂú¶þ²æÊ÷ºÍÍêÈ«¶þ²æÊ÷¡£
¡¡¡¡¶ÔÓÚ·ÇÍêÈ«¶þ²æÊ÷À´Ëµ£¬Ò»¸öÉî¶ÈΪhµÄÊ÷£¬ÐèÒªµÄ´æ´¢µ¥ÔªÎª2h-1£¬»áÔì³É¿Õ¼äµÄÀË·Ñ£¬È磺¶ÔÓÚÓÒÖ§Ê÷À´Ëµ£¬Ö»ÐèÒªh¸ö´æ´¢µ¥Ôª£¬µ«ÊÇ´æ´¢µÄʱºòȴҪʹÓÃ2h-1¸ö¿Õ¼ä¡£
¡¡¡¡2£©Á´Ê½´æ´¢½á¹¹
¡¡¡¡¶þ²æÊ÷µÄÁ´Ê½´æ´¢£º½«¶þ²æÊ÷µÄ¸÷¸ö½áµãËæ»úµÄ´æ·ÅÔÚλÖÃÈÎÒâµÄÄÚ´æ¿Õ¼äÖУ¬¸÷¸ö½áµãÖ®¼äµÄÂß¼­¹Øϵͨ¹ýÖ¸ÕëÀ´·´Ó³¡£
¡¡¡¡Á´Ê½´æ´¢ÓÐ2ÖÖ·½Ê½£º¶þ²æÁ´±í´æ´¢½á¹¹¡¢Èý²æÁ´±í´æ´¢½á¹¹¡£
¡¡¡¡¡¤ ¶þ²æÁ´±í´æ´¢½á¹¹ÓÐ3¸öÓò£ºÊý¾ÝÓòdata¡¢×óº¢×ÓÓòlchild¡¢ÓÒº¢×ÓÓòrchild
¡¡¡¡¡¤ Èý²æÁ´±í´æ´¢½á¹¹ÓÐ4¸öÓò£ºÊý¾ÝÓòdata¡¢×óº¢×ÓÓòlchild¡¢ÓÒº¢×ÓÓòrchild¡¢¸¸½ÚµãÓòparent
¡¡¡¡¡¤ ¶þ²æÁ´±í´æ´¢½á¹¹Ê¾Òâͼ£º
¡¡¡¡¡¤ Èý²æÁ´±í´æ´¢½á¹¹Ê¾Òâͼ£º
¡¡¡¡¶þ²æÁ´Ê½´æ´¢½á¹¹ÊǶþ²æÊ÷×î³£ÓõĴ洢½á¹¹¡£
¡¡¡¡½áµãÀà
¡¡¡¡public class BiTreeNode {
¡¡¡¡    public Object data;//Êý¾ÝÓò
¡¡¡¡    public BiTreeNode lchild, rchild;//×ó¡¢ÓÒº¢×ÓÓò
¡¡¡¡}
¡¡¡¡¶þ²æÊ÷Àà
¡¡¡¡public class BiTree {
¡¡¡¡    private BiTreeNode root;
¡¡¡¡    //Ê÷µÄ¸ù½Úµã
¡¡¡¡    public BiTree() {//¹¹½¨Ò»¿Å¿ÕÊ÷
¡¡¡¡        this.root = null;
¡¡¡¡    }
¡¡¡¡    public BiTree(BiTreeNode root) {//¹¹½¨Ò»¿ÃÊ÷
¡¡¡¡        this.root = root;
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡root.lchild = new BiTreeNode(¡°B¡±);
¡¡¡¡root.rchild = new BiTreeNode(¡°C¡±);
¡¡¡¡1.3 ¶þ²æÊ÷µÄ±éÀú
¡¡¡¡1.3.1 ¸ÅÊö
¡¡¡¡¶þ²æÊ÷µÄ±éÀú£ºÑØ×ÅijÌõËÑË÷·¾¶¶Ô¶þ²æÊ÷ÖеĽáµã½øÐзÃÎÊ£¬Ê¹µÃÿ¸ö½áµã¾ù±»·ÃÎÊÒ»´Î£¬¶øÇÒ½ö±»·ÃÎÊÒ»´Î¡£¡°·ÃÎÊ¡±µÄº¬Òå½ÏΪ¹ã·º£¬ÀýÈ磺Êä³ö½áµãÐÅÏ¢¡£
¡¡¡¡¶þ²æÊ÷ÓÐ3ÌõËÑË÷·¾¶£º
¡¡¡¡¡¤ ÏÈÉϺóÏÂ
¡¡¡¡¡¤ ÏÈ×óºóÓÒ
¡¡¡¡¡¤ ÏÈÓÒºó×ó
¡¡¡¡¶ÔÓ¦3ÌõËÑË÷·¾¶£¬¶þ²æÊ÷ÓÐ7ÖÖ±éÀú·½Ê½£º
¡¡¡¡¡¤ ÏÈÉϺóÏÂ
¡¡¡¡  - ²ã´Î±éÀú
¡¡¡¡¡¤ ÏÈ×óºóÓÒ £¨D data¸ù¡¢ L left×ó¡¢R right ÓÒ£©
¡¡¡¡  - DLR £¨Ïȸù±éÀú¡¢ÏÈÐò±éÀú¡¢ÏȸùÐò±éÀú£©
¡¡¡¡  - LDR £¨Öиù±éÀú¡¢ÖÐÐò±éÀú¡¢ÖиùÐò±éÀú£©
¡¡¡¡  - LRD £¨ºó¸ù±éÀú¡¢ºóÐò±éÀú¡¢ºó¸ùÐò±éÀú£©
¡¡¡¡¡¤ ÏÈÓÒºó×ó
¡¡¡¡  - DRL
¡¡¡¡  - RDL
¡¡¡¡  - RLD
¡¡¡¡ÐèÒª±éÀúµÄ¶þ²æÊ÷£º
¡¡¡¡1.3.2 ±éÀú·½Ê½¡¾Öص㡿
¡¡¡¡1£© ²ã´Î±éÀú
¡¡¡¡Èô¶þ²æÊ÷Ϊ¿Õ£¬ÔòΪ¿Õ²Ù×÷£»·ñÔò£¬°´×ÔÉ϶øÏÂÏÈ·ÃÎʵÚ0²ãµÄ¸ù½Úµã£¬È»ºóÔÙ´Ó×óµ½ÓÒÒÀ´Î·ÃÎʸ÷²ã´ÎÖеÄÿһ¸ö½áµã¡£
¡¡¡¡²ã´Î±éÀúÐòÁУº
¡¡¡¡ABECFDGHK
¡¡¡¡2£©Ïȸù£¨Ðò£©±éÀú DLR
¡¡¡¡Èô¶þ²æÊ÷Ϊ¿Õ£¬ÔòΪ¿Õ²Ù×÷£¬·ñÔò£º
¡¡¡¡1. ·ÃÎʸù½Úµã
¡¡¡¡2. Ïȸù±éÀú×ó×ÓÊ÷
¡¡¡¡3. Ïȸù±éÀúÓÒ×ÓÊ÷
¡¡¡¡Ïȸù±éÀúÐòÁУº
¡¡¡¡ABCDEFGHK
¡¡¡¡3£©Öиù£¨Ðò£©±éÀú LDR
¡¡¡¡Èô¶þ²æÊ÷Ϊ¿Õ£¬ÔòΪ¿Õ²Ù×÷£»·ñÔò£º
¡¡¡¡1. Öиù±éÀú×ó×ÓÊ÷
¡¡¡¡2. ·ÃÎʸù½Úµã
¡¡¡¡3. Öиù±éÀúÓÒ×ÓÊ÷
¡¡¡¡Öиù±éÀúÐòÁУº
¡¡¡¡BDCAEHGKF
¡¡¡¡4£©ºó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡Èô¶þ²æÊ÷Ϊ¿Õ£¬ÔòΪ¿Õ²Ù×÷£»·ñÔò£º
¡¡¡¡1. ºó¸ù±éÀú×ó×ÓÊ÷
¡¡¡¡2. ºó¸ù±éÀúÓÒ×ÓÊ÷
¡¡¡¡3. ·ÃÎʸù½Úµã
¡¡¡¡ºó¸ù±éÀúÐòÁУº
¡¡¡¡DCBHKGFEA
¡¡¡¡5£©Á·Ï°
¡¡¡¡Á·Ï°1£º
¡¡¡¡ÏȸùÐò±éÀú£ºABDEGCFH
¡¡¡¡ÖиùÐò±éÀú£ºDBGEAFHC
¡¡¡¡ºó¸ùÐò±éÀú£ºDGEBHFCA
¡¡¡¡Á·Ï°2£º
¡¡¡¡ÏȸùÐò±éÀú£ºABDEGJHCFIKL
¡¡¡¡ÖиùÐò±éÀú£ºDBJGEHACKILF
¡¡¡¡ºó¸ùÐò±éÀú£ºDJGHEBKLIFCA
¡¡¡¡Á·Ï°3£º
¡¡¡¡ÏȸùÐò±éÀú£ºABCDEFGHK
¡¡¡¡ÖиùÐò±éÀú£ºBDCAEHGKF
¡¡¡¡ºó¸ùÐò±éÀú£ºDCBHKGFEA
¡¡¡¡1.3.3 ±éÀú·½Ê½£ºµÝ¹éʵÏÖ¡¾Öص㡿
¡¡¡¡1£©Ëã·¨£ºÏȸù£¨Ðò£©±éÀú DLR
¡¡¡¡public void preRootTraverse(BiTreeNode T) {
¡¡¡¡    if(T != null) {
¡¡¡¡        System.out.print(T.data);//Êä³ö¸ùÔªËØ
¡¡¡¡        preRootTraverse(T.lchild);//Ïȸù±éÀú×ó×ÓÊ÷
¡¡¡¡        preRootTraverse(T.rchild);//Ïȸù±éÀúÓÒ×ÓÊ÷
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡2£©Ëã·¨£ºÖиù£¨Ðò£©±éÀú LDR
¡¡¡¡public void inRootTraverse(BiTreeNode T) {
¡¡¡¡    if(T != null) {
¡¡¡¡        inRootTraverse(T.lchild);//Öиù±éÀú´¦Àí×ó×ÓÊ÷
¡¡¡¡        System.out.print(T.data);//·ÃÎʸù½Úµã
¡¡¡¡        inRootTraverse(T.rchild);//Öиù±éÀú´¦ÀíÓÒ×ÓÊ÷
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡3£©Ëã·¨£ººó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡public void postRootTraverse(BiTreeNode T) {
¡¡¡¡    if(T != null) {
¡¡¡¡        postRootTraverse(T.lchild);//ºó¸ù±éÀú×ó×ÓÊ÷
¡¡¡¡        postRootTraverse(T.rchild);//ºó¸ù±éÀúÓÒ×ÓÊ÷
¡¡¡¡        System.out.print(T.data);//·ÃÎʸù½áµã
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡4£©¶¯»­ÑÝʾ£ººó¸ù±éÀú
¡¡¡¡1.3.4 ±éÀú·½Ê½£º·ÇµÝ¹éʵÏÖ
¡¡¡¡1£©·ÖÎö£ºÏȸù£¨Ðò£©±éÀú DLR
¡¡¡¡½èÖúÒ»¸öÕ»À´¼Ç¼µ±Ç°±»·ÃÎʽáµãµÄÓÒº¢×Ó½áµã£¬ÒÔ±ã±éÀúÍêÒ»¸ö½áµãµÄ×ó×ÓÊ÷ºó£¬¿ÉÒÔ¼ÌÐø±éÀú¸Ã½áµãµÄÓÒ×ÓÊ÷¡£
¡¡¡¡ÊµÏÖ˼Ï룺
¡¡¡¡1. ½«¸ù½Úµãѹջ
¡¡¡¡2. ´ÓÕ»¶¥»ñµÃÐèÒª±éÀúµÄ½áµãA£¬²¢·ÃÎʽáµãA¡£
¡¡¡¡3. ´Ëʱ½áµãAÓÐ×óº¢×ÓÖ±½Ó·ÃÎÊ£¬½áµãAÓÐÓÒº¢×ÓѹÈëÕ»¶¥
¡¡¡¡4. ͬʱÑØ×Å×ó×ÓÊ÷¼ÌÐøËÑË÷£¬Öظ´²½Öè3
¡¡¡¡5. µ±×ó×ÓÊ÷·ÃÎÊÍê³Éºó£¬Öظ´²½Öè2ÒÀ´Î·ÃÎʶÔÓ¦µÄÓÒ×ÓÊ÷
¡¡¡¡2£©Ëã·¨£ºÏȸù£¨Ðò£©±éÀú DLR¡¾Öص㡿
¡¡¡¡public void preRootTraverse() {
¡¡¡¡    BiTreeNode T = root;
¡¡¡¡    if( T != null ) {
¡¡¡¡        LinkStack S = new LinkStack();// ´´½¨Õ»¼Ç¼ûÓзÃÎʹýµÄÓÒ×ÓÊ÷
¡¡¡¡        S.push(T);// ½«¸ù½ÚµãѹÈëÕ»¶¥
¡¡¡¡        while(!S.isEmpty()) {// Õ»ÖÐÖ»ÒªÓÐÊý¾Ý£¬±íʾ¼ÌÐø±éÀú
¡¡¡¡            T = S.pop();// µ¯³öÕ»¶¥Êý¾Ý
¡¡¡¡            System.out.print(T.data);// ½áµã±»·ÃÎÊ
¡¡¡¡            while(T != null) {// TÖ¸Õ룬·ÃÎÊÿһ¸ö×óº¢×Ó
¡¡¡¡                if(T.lchild != null) {// Êä³ö×óº¢×Ó
¡¡¡¡                    System.out.print(T.lchild.data);
¡¡¡¡                }
¡¡¡¡                if(T.rchild != null) {// ½«ÓÒº¢×Óѹջ
¡¡¡¡                    T.push(T.rchild);
¡¡¡¡                }
¡¡¡¡                T = T.lchild;// ·ÃÎÊÏÂÒ»¸ö×óº¢×Ó
¡¡¡¡            }
¡¡¡¡        }
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡3£©·ÖÎö£ºÖиù£¨Ðò£©±éÀú LDR
¡¡¡¡½èÖúÒ»¸öÕ»À´¼Ç¼±éÀú¹ý³ÌÖÐËù¾­ÀúµÄ¶øδ±»·ÃÎʵÄËùÓнáµã£¬ÒÔ±ã±éÀúÍê×ó×ÓÊ÷ºóÄÜ˳ÀûµÄ·µ»Øµ½ËüµÄ¸¸½Úµã¡£
¡¡¡¡ÊµÏÖ˼Ï룺
¡¡¡¡1. ´Ó·Ç¿Õ¶þ²æÊ÷µÄ¸ù½Úµã³ö·¢
¡¡¡¡2. ÑØןýáµãµÄ×ó×ÓÊ÷ÏòÏÂËÑË÷£¬ÔÚËÑË÷¹ý³ÌÖн«Óöµ½µÄÿһ¸ö½áµãÒÀ´Îѹջ£¬Ö±µ½¶þ²æÊ÷ÖÐ×î×óϽáµãѹջΪֹ£¬
¡¡¡¡3. È»ºó´ÓÕ»Öе¯³öÕ»¶¥½áµã²¢¶ÔÆä½øÐзÃÎÊ£¬·ÃÎÊÍê³ÉºóÔÙ½øÈë¸Ã½áµãµÄÓÒ×ÓÊ÷£¬
¡¡¡¡4. ²¢ÓÃÉÏÊöÏàͬµÄ·½·¨È¥±éÀú¸Ã½áµãµÄÓÒ×ÓÊ÷£¬Ö±µ½¶þ²æÊ÷ÖÐËùÓеĽáµã¶¼±»·ÃÎÊ¡£
¡¡¡¡4£©Ëã·¨£ºÖиù£¨Ðò£©±éÀú LDR£¨Á˽⣩
¡¡¡¡public void inRootTraverse() {
¡¡¡¡    BiTreeNode T = root;
¡¡¡¡    if(T != null) {
¡¡¡¡        LinkStack S = new LinkStack();
¡¡¡¡        S.push(T);//½«¸ù½ÚµãѹÈëµ½Õ»¶¥
¡¡¡¡        while( !S.isEmpty() ) {//Õ»ÖÐÓÐÊý¾Ý£¬±íʾ±éÀúδÍê³É
¡¡¡¡            //1 ½«ËùÓеÄ×óº¢×Óѹջ
¡¡¡¡            while(S.peek() != null) {//Õ»¶¥µÄÔªËز»Îª¿Õ£¬×¢Ò⣺²»Êǵ¯Õ»
¡¡¡¡                // »ñµÃÕ»¶¥£¬
¡¡¡¡                BiTreeNode temp = (BiTreeNode)S.peek();
¡¡¡¡                // ²¢½«×óº¢×ÓѹÈëÕ»¶¥
¡¡¡¡                S.push(temp.lchild);
¡¡¡¡            }
¡¡¡¡            S.pop();//½«Õ»¶¥µÄ¿ÕÔªËص¯³ö
¡¡¡¡            
¡¡¡¡            //2 ÒÀ´Îµ¯³öÕ»£¬·ÃÎʵ±Ç°½Úµã£¬Èç¹ûÓÐÓÒº¢×Ó¼ÌÐøѹջ
¡¡¡¡            if(! S.isEmpty()) {
¡¡¡¡                T = (BiTreeNode)S.pop();
¡¡¡¡                System.out.print(T.data);//·ÃÎÊÕ»¶¥
¡¡¡¡                S.push(T.rchild);
¡¡¡¡            }
¡¡¡¡        }
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡5£©·ÖÎö£ººó¸ù£¨Ðò£©±éÀúLRD
¡¡¡¡¡¤ ½èÖúÒ»¸öÕ»ÓüÇÔرéÀú¹ý³ÌÖÐËù¾­Àú¶øδ±»·ÃÎʵÄËùÓнáµã¡£
¡¡¡¡1. È·¶¨¶¥µã½áµãÊÇ·ñÄÜ·ÃÎÊ£¬ÐèÒªÖªµÀ¸Ã½áµãµÄÓÒ×ÓÊ÷ÊÇ·ñ±»±éÀúÍê³É¡£
¡¡¡¡2. ÒýÈëÁ½¸ö±äÁ¿£¬Ò»¸ö·ÃÎʱê¼Ç±äÁ¿flagºÍÒ»¸ö½áµãÖ¸Õëp
¡¡¡¡  - flagÓÀ²»±ê¼Çµ±Ç°Õ»¶¥½áµãÊÇ·ñ±»·ÃÎÊ
¡¡¡¡  - pÖ¸Ïòµ±Ç°±éÀú¹ý³ÌÖÐ×îºóÒ»¸ö±»·ÃÎʵĽáµã¡£
¡¡¡¡¡¤ ÊµÏÖ˼Ïë
¡¡¡¡1. ´Ó·Ç¿Õ¶þ²æÊ÷µÄ¸ù½Úµã³ö·¢
¡¡¡¡2. ½«ËùÓеÄ×óº¢×ÓÏà¼Ìѹջ£¬
¡¡¡¡3. È»ºó»ñµÃÕ»ÖÐÿ¸ö½áµãA£¬Èç¹û¸Ã½áµãAûÓÐÓÒº¢×Ó»òÓÒº¢×ÓÒѾ­·ÃÎʹý£¬½«·ÃÎʽáµãA
¡¡¡¡4. Èç¹û½áµãAÓÐÓÒº¢×Ó»òÓÒº¢×Óδ±»·ÃÎʹý£¬¼ÌÐøѹջ
¡¡¡¡5. ͨ¹ý±ê¼Ç£¬Ê¹³ÌÐò¿ªÊ¼³öÁËÐÂÌí¼Ó½øÈëµÄ½áµã¡£
¡¡¡¡6£©Ëã·¨£ººó¸ù£¨Ðò£©±éÀúLRD£¨Á˽⣩
¡¡¡¡public void postRootTraverse() {
¡¡¡¡    BiTreeNode T = root;
¡¡¡¡    if( T != null) {
¡¡¡¡        LinkStack S = new LinkStack();
¡¡¡¡        S.push(T);
¡¡¡¡        // ÉùÃ÷Á½¸ö±äÁ¿
¡¡¡¡        Boolean flag;//ÓÃÓڼǼÊÇ·ñ±»·ÃÎÊ
¡¡¡¡        BiTreeNode p;//ÓÃÓڼǼÉÏÒ»´Î´¦ÀíµÄ½áµã
¡¡¡¡        while(! S.isEmpty() ) {
¡¡¡¡            //1 ½«ËùÓеÄ×óº¢×Óѹջ
¡¡¡¡            while(S.peek() != null) {//Õ»¶¥µÄÔªËز»Îª¿Õ£¬×¢Ò⣺²»Êǵ¯Õ»
¡¡¡¡                // »ñµÃÕ»¶¥£¬
¡¡¡¡                BiTreeNode temp = (BiTreeNode)S.peek();
¡¡¡¡                // ²¢½«×óº¢×ÓѹÈëÕ»¶¥
¡¡¡¡                S.push(temp.lchild);
¡¡¡¡            }
¡¡¡¡            S.pop();//½«Õ»¶¥µÄ¿ÕÔªËص¯³ö
¡¡¡¡            while( !S.isEmpty() ) {
¡¡¡¡                T = (BiTreeNode) S.peek();
¡¡¡¡                if(T.rchild == null || T.rchild == p) {  // ûÓÐÓÒº¢×Ó »ò ÒѾ­·ÃÎʹý
¡¡¡¡                    System.out.print(T.data);
¡¡¡¡                    S.pop();//µ¯³ö
¡¡¡¡                    p = T;//¼Ç¼¸Õ²Å·ÃÎʹýµÄ
¡¡¡¡                    flag = true;//ûÓÐÐÂÔªËØ£¬¼ÌÐø·ÃÎÊ
¡¡¡¡                } else {
¡¡¡¡                    S.push(T.rchlid);
¡¡¡¡                    flag = false;//ÐÂÓÒ×ÓÊ÷Ìí¼Ó
¡¡¡¡                }
¡¡¡¡                if(!flag) {
¡¡¡¡                    break;//Èç¹ûÓÐÓÒ×ÓÊ÷£¬ÐèÒªÖØпªÊ¼
¡¡¡¡                }
¡¡¡¡            }
¡¡¡¡        }
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡1.4 ½¨Á¢¶þ²æÊ÷
¡¡¡¡1.4.1 ·½Ê½
¡¡¡¡ËÄÖÖ·½Ê½¿ÉÒÔ½¨Á¢¶þ²æÊ÷£º
¡¡¡¡1. ÓÉÏȸùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷
¡¡¡¡2. Óɺó¸ùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷
¡¡¡¡3. ÓɱêÃ÷¿Õ×ÓÊ÷µÄÏȸù±éÀú½¨Á¢¶þ²æÊ÷
¡¡¡¡4. ÓÉÍêÈ«¶þ²æÊ÷µÄ˳Ðò´æ´¢½á¹¹½¨Á¢¶þ²æÁ´Ê½´æ´¢½á¹¹
¡¡¡¡1.4.2 ÓÉÏȸùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷¡¾Öص㡿
¡¡¡¡1£©ÏȸùºÍÖиùÔ­Àí
¡¡¡¡×ܽ᣺
¡¡¡¡¡¤ Í¨¹ýÏÈÐò±éÀú»ñµÃ¸ù½áµã£¨µÚÒ»¸ö½áµã£©¡£
¡¡¡¡¡¤ Í¨¹ý¸ù½áµãÔÚÖÐÐò±éÀúÈ·¶¨×ó×ÓÊ÷ºÍÓÒ×ÓÊ÷¡£
¡¡¡¡2£©ÊµÀý·ÖÎö
¡¡¡¡3£©Á·Ï°
¡¡¡¡Á·Ï°1£º
¡¡¡¡ÒÑÖª¶þ²æÊ÷£¬ÏÈÐòÐòÁÐΪabcdefg£¬ÖÐÐòÐòÁÐΪcbdaegf£¬Öؽ¨¶þ²æÊ÷£¿
¡¡¡¡Á·Ï°2£º
¡¡¡¡ÒѾ­¶þ²æÊ÷£¬Ç°Ðò±éÀúÐòÁÐΪ{1,2,4,7,3,5,6,8}£¬ÖÐÐò±éÀúÐòÁÐ{4,7,2,1,5,3,8,6}£¬ºóÐò±éÀúÐòÁÐÊÇ£¿
¡¡¡¡Á·Ï°3£º
¡¡¡¡ÒÑÖªÒ»¿ÃÊ÷¶þ²æÊ÷µÄÏȸù±éÀúºÍÖиù±éÀúµÄÐòÁзֱðΪ£ºA B D G H C E F IºÍG D H B A E C I F£¬Çë»­³ö´Ë¶þ²æÊ÷£¬²¢Ð´³öËüµÄºó¸ù±éµÄÐòÁУ¿
¡¡¡¡4£©Ëã·¨
¡¡¡¡/** ÀýÈ磺new BiTree("ABDEGCFH","DBGEAFHC",0,0,8);
¡¡¡¡* @param preOrder ÏÈÐò±éÀúÐòÁÐ
¡¡¡¡* @param inOrder  ÖÐÐò±éÀúÐòÁÐ
¡¡¡¡* @param preIndex ÔÚpreOrderÖпªÊ¼Î»ÖÃ
¡¡¡¡* @param inIndex  ÔÚinOrderÖпªÊ¼Î»ÖÃ
¡¡¡¡* @param count ½áµãÊý
¡¡¡¡*/
¡¡¡¡public BiTree(String preOrder,String inOrder,int preIndex,int inIndex,int count) {
¡¡¡¡    if(count > 0) {
¡¡¡¡        //1 ͨ¹ýÏÈÐò»ñµÃ¸ù½áµã
¡¡¡¡        char r = preOrder.charAt(preIndex);
¡¡¡¡        //2 ÖÐÐòÖУ¬¸ù½áµãµÄλÖÃ
¡¡¡¡        int i = 0 ;
¡¡¡¡        for(; i < count ; i ++) {
¡¡¡¡            if(r == inOrder.charAt(i + inIndex)) {
¡¡¡¡                break;
¡¡¡¡            }
¡¡¡¡        }
¡¡¡¡        //3 ͨ¹ýÖÐÐò£¬½ØÈ¡×ó×ÓÊ÷ºÍÓÒ×ÓÊ÷
¡¡¡¡        root = new BiTreeNode(r);
¡¡¡¡        root.lchild = new BiTree(preOrder,inOrder,preIndex+1, inIndex, i).root;
¡¡¡¡        root.rchild = new BiTree(preOrder,inOrder,preIndex+1+i,inIndex + i + 1, count-i-1).root;
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡1.4.3 Óɺó¸ùºÍÖиù±éÀúÐòÁн¨¶þ²æÊ÷¡¾Öص㡿
¡¡¡¡1£©ºó¸ùºÍÖиùÔ­Àí
¡¡¡¡×ܽ᣺
¡¡¡¡¡¤ Í¨¹ýºóÐò±éÀú»ñµÃ¸ù½áµã£¨×îºóÒ»¸ö½áµã£©¡£
¡¡¡¡¡¤ Í¨¹ý¸ù½áµãÔÚÖÐÐò±éÀúÈ·¶¨×ó×ÓÊ÷ºÍÓÒ×ÓÊ÷¡£
¡¡¡¡2£©Á·Ï°
¡¡¡¡Á·Ï°1£º
¡¡¡¡ÒÑÖª¶þ²æÊ÷£¬Öиù±éÀúÐòÁÐΪ£º9,3,15,20,7¡¢ºó¸ù±éÀúÐòÁÐΪ£º9,15,7,20,3£¬Öؽ¨¶þ²æÊ÷£¿
¡¡¡¡Á·Ï°2£º
¡¡¡¡ÒÑÖª¶þ²æÊ÷£¬Öиù±éÀúÐòÁÐΪ£º6,3,4,1,5,8,2,7¡¢ºó¸ù±éÀúÐòÁÐΪ£º3,6,1,8,5,7,2,4£¬Ç°¸ù±éÀúÐòÁУ¿
¡¡¡¡Á·Ï°3£º
¡¡¡¡ÒÑÖªÒ»¿ÃÊ÷¶þ²æÊ÷µÄºó¸ù±éÀúºÍÖиù±éÀúµÄÐòÁзֱðΪ£ºA C D B G I H F EºÍA B C D E F G H I£¬Çë»­³ö¸Ã¶þ²æÊ÷£¬²¢Ð´³öËüµÄÏȸù±éÀúµÄÐòÁÐ
¡¡¡¡1.4.4 ÓɱêÃ÷¿Õ×ÓÊ÷µÄÏȸù±éÀú½¨Á¢¶þ²æÊ÷
¡¡¡¡1£©¸ÅÊö
¡¡¡¡½öʹÓÃÏȸù±éÀúÐòÁÐÎÞ·¨Î¨Ò»È·¶¨Ò»¿Å¶þ²æÊ÷£¬ÀýÈ磺¡°AB¡±£¬B¿ÉÒÔÊÇ×óº¢×Ó£¬Ò²¿ÉÒÔÊÇÓÒº¢×Ó¡£
¡¡¡¡ÔÚÏȸù±éÀúÐòÁÐÖмÓÈë¿ÕÊ÷ÐÅÏ¢£¬´Ó¶øÈ·¶¨½áµãÓëË«Çס¢º¢×ÓÓëÐֵܼäµÄ¹Øϵ£¬´Ó¶øΨһȷ¶¨Ò»¿Å¶þ²æÊ÷¡£
¡¡¡¡±íÃû¿Õ×ÓÊ÷µÄÏÈÐò±éÀúÐòÁУº¶þ²æÊ÷ÖÐÿһ¸ö½áµã¶¼±ØÐëÓк¢×Ó»ò#
¡¡¡¡¡¤ ¿ÕÊ÷£ºÒÔ×Ö·û¡°#¡±±íʾ
¡¡¡¡¡¤ ¸ù½ÚµãA£ºÒÔ×Ö·û´®¡°A##¡±±íʾ
¡¡¡¡¡¤ ÏÂͼÊ÷£¬ÒÔ×Ö·û´®¡°AB#C##D##¡±±íʾ
¡¡¡¡ÏÂͼÊ÷£¬ÒÔ×Ö·û´®¡°ABDH#K###E##CFI###G#J##¡±±íʾ£º
¡¡¡¡2£©Ëã·¨
¡¡¡¡½¨Á¢¶þ²æÁ´±íËã·¨·ÖÎö£º
¡¡¡¡Èô¶ÁÈ¡µÄ×Ö·ûÊÇ¡°#¡±£¬Ôò½¨Á¢¿ÕÊ÷£»·ñÔò£º
¡¡¡¡¡¤ ½¨Á¢¸ù½Úµã
¡¡¡¡¡¤ µÝ¹é½¨Á¢×ó×ÓÊ÷µÄ¶þ²æÁ´±í
¡¡¡¡¡¤ µÝ¹é½¨Á¢ÓÒ×ÓÊ÷µÄ¶þ²æ
¡¡¡¡Ëã·¨
¡¡¡¡²ÉÓÃÏÈÐò£¬Ã¿Ò»¸ö½áµã¶¼¸ù×óÓÒ
¡¡¡¡private static int index = 0;//ÓÃÓڼǼpreStrµÄË÷ÒýÖµ
¡¡¡¡public BiTree(String preStr) {
¡¡¡¡    char c = preStr.charAt(index++);
¡¡¡¡    if(c != '#') {
¡¡¡¡        root = new BiTreeNode(c);//¸ù
¡¡¡¡        root.lchild = new BiTree(preStr).root;//×ó
¡¡¡¡        root.rchild = new BiTree(preStr).root;//ÓÒ
¡¡¡¡    } else {
¡¡¡¡        root = null;
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡1.4.5 ÓÉÍêÈ«¶þ²æÊ÷µÄ˳Ðò´æ´¢½á¹¹½¨Á¢¶þ²æÁ´Ê½´æ´¢½á¹¹
¡¡¡¡Óɶþ²æÊ÷µÄÌØÐÔ5¿ÉÖª£¬½áµã±àºÅ¹æÔò£º
¡¡¡¡¡¤ ¸ù½ÚµãµÄ±àºÅΪ0
¡¡¡¡¡¤ ±àºÅÎÒiµÄ½áµã
¡¡¡¡  - ×óº¢×ӵıàºÅΪ2i+1
¡¡¡¡  - ÓÒº¢×ӵıàºÅΪ2i+2
¡¡¡¡ÍêÈ«¶þ²æÊ÷¼°Æä˳Ðò´æ´¢£¨²ã´Î±éÀúÐòÁУ©
¡¡¡¡Ëã·¨
¡¡¡¡public BiTreeNode createBiTree(String sqBiTree, int index) {
¡¡¡¡    BiTreeNode root = null;
¡¡¡¡    if(index < sqBiTree.length()) {
¡¡¡¡        root = new BiTreeNode(sqBiTree.charAt(index));
¡¡¡¡        root.lchild = createBiTree(sqBiTree, 2*index+1);
¡¡¡¡        root.rchild = createBiTree(sqBiTree, 2*index+2);
¡¡¡¡    }
¡¡¡¡    return root;
¡¡¡¡}
¡¡¡¡1.5 ¹þ·òÂüÊ÷¼°¹þ·òÂü±àÂë
¡¡¡¡1.5.1 »ù±¾¸ÅÄî
¡¡¡¡½áµã¼ä·¾¶£º´ÓÒ»¸ö½áµãµ½ÁíÒ»¸ö½áµãËù¾­ÀúµÄ½áµãºÍ·ÖÖ§ÐòÁС£
¡¡¡¡½áµãµÄ·¾¶³¤¶È£º´Ó¸ù½Úµãµ½¸Ã½áµãµÄ·¾¶ÉÏ·ÖÖ§µÄÊýÄ¿¡£
¡¡¡¡½áµãµÄȨ£ºÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÈËÃÇÍùÍù»á¸øÊ÷ÖеÄÿһ¸ö½áµã¸³ÓèÒ»¸ö¾ßÓÐijÖÖʵ¼ÊÒâÒåµÄÊýÖµ£¬Õâ¸öÊýÖµ±»³ÆΪ¸Ã½áµãµÄȨֵ¡£
¡¡¡¡½áµãµÄ´øȨ·¾¶³¤¶È£º¸Ã½áµãµÄ·¾¶³¤¶ÈÓë¸Ã½áµãµÄȨֵµÄ³Ë»ý¡£
¡¡¡¡Ê÷µÄ´øȨ·¾¶³¤¶È£ºÊ÷ÖÐËùÓÐÒ¶½áµãµÄ´øȨ·¾¶³¤¶ÈÖ®ºÍ¡£
¡¡¡¡1.5.2 ×îÓŶþ²æÊ÷£¨¹þ·òÂüÊ÷£©¡¾Öص㡿
¡¡¡¡¸ø¶¨n¸öȨֵ²¢×÷Ϊn¸öÒ¶½áµã£¬°´Ò»¶¨¹æÔò¹¹ÔìÒ»¿Å¶þ²æÊ÷£¬Ê¹Æä´øȨ·¾¶³¤¶È´ïµ½×îСֵ£¬ÔòÕâ¿Ã¶þ²æÊ÷±»³ÆΪ×îÓŶþ²æÊ÷£¬Ò²³ÆΪ¹þ·òÂüÊ÷¡£
¡¡¡¡Í¬Ò»×éÊý¾ÝµÄ×îÓŶþ²æÊ÷²»Î¨Ò»£¬ÒòΪûÓÐÏÞ¶¨×óÓÒ×ÓÊ÷£¬²¢ÇÒÓÐȨֵÖظ´Ê±£¬¿ÉÄÜÊ÷µÄ¸ß¶È¶¼²»Î¨Ò»£¬Î¨Ò»µÄÖ»ÊÇ´øȨ·¾¶³¤¶ÈÖ®ºÍ×îС¡£ ¹¹½¨¹þ·òÂüÊ÷µÄʱºò¼´¿ÉÒÔÍƵ¼³ö¡£
¡¡¡¡1.5.3 ¹¹½¨¹þ·òÂüÊ÷¡¾Öص㡿
¡¡¡¡Á·Ï°£º
¡¡¡¡ÓÐ5¸ö´øȨ½áµã {A,B,C,D,E}£¬ÆäȨֵ·Ö±ðΪW={10,30,40,15,6}£¬È¨Öµ×÷Ϊ½áµãÊý¾Ý£¬»æÖÆÒ»¿Å¹þ·òÂü¡£
¡¡¡¡1.5.4 ¹þ·òÂü±àÂ롾Öص㡿
¡¡¡¡±àÂëËßÇ󣺶Ô×Ö·û¼¯½øÐжþ½øÖƱàÂ룬ʹµÃÐÅÏ¢µÄ´«ÊäÁ¿×îС¡£Èç¹ûÄܶÔÿһ¸ö×Ö·ûÓò»Í¬µÄ³¤¶ÈµÄ¶þ½øÖƱàÂ룬²¢ÇÒ¾¡¿ÉÄܼõÉÙ³öÏÖ´ÎÊý×î¶àµÄ×Ö·ûµÄ±àÂëλÊý£¬ÔòÐÅÏ¢´«Ë͵Ä×ܳ¤¶È±ã¿ÉÒÔ´ïµ½×îС¡£
¡¡¡¡¹þ·òÂü±àÂ룺ÓõçÎÄÖи÷¸ö×Ö·ûʹÓõÄƵ¶È×÷ΪҶ½áµãµÄȨ£¬¹¹ÔìÒ»¿Å¾ßÓÐ×îС´øȨ·¾¶³¤¶ÈµÄ¹þ·òÂüÊ÷£¬Èô¶ÔÊ÷ÖеÄÿ¸ö×ó·ÖÖ§¸³Óè±ê¼Ç0£¬ÓÒ·ÖÖ§¸³Óè±ê¼Ç1£¬Ôò´Ó¸ù½Úµãµ½Ã¿¸öÒ¶½áµãµÄ·¾¶Éϵıê¼ÇÁ¬½ÓÆðÀ´¾Í¹¹³ÉÒ»¸ö¶þ½øÖÆ´®£¬¸Ã¶þ½øÖÆ´®±»³ÆΪ¹þ·òÂü±àÂë¡£
¡¡¡¡Á·Ï°£ºp176
¡¡¡¡ÒÑÖªÔÚÒ»¸öÐÅϢͨÐÅÁªÂçÖÐʹÓÃÁË8¸ö×Ö·û£ºa¡¢b¡¢c¡¢d¡¢e¡¢f¡¢gºÍh£¬Ã¿¸ö×Ö·ûµÄʹÓÃƵ¶È·Ö±ðΪ£º6¡¢30¡¢8¡¢9¡¢15¡¢24¡¢4¡¢12£¬ÊÔÉè¼Æ¸÷¸ö×Ö·ûµÄ¹þ·òÂü±àÂë¡£
¡¡¡¡¡¤ ¹þ·òÂüÊ÷½øÐÐÒëÂë
¡¡¡¡¹þ·òÂü±àÂëÊÇÒ»ÖÖǰ׺Â룬ÈκÎÒ»¸ö×Ö·ûµÄ±àÂ붼²»ÊÇͬһ¸ö×Ö·û¼¯ÖÐÁíÒ»¸ö×Ö·ûµÄ±àÂëµÄǰ׺¡£
¡¡¡¡ÒëÂë¹ý³Ìʱ±àÂë¹ý³ÌµÄÄæ¹ý³Ì¡£´Ó¹þ·òÂüÊ÷µÄ¸ù¿ªÊ¼£¬´Ó×óµ½ÓҰѶþ½øÖƱàÂëµÄÿһλ½øÐÐÅбð£¬ÈôÓöµ½0£¬ÔòÑ¡Ôñ×ó·ÖÖ§×ßÏòÏÂÒ»¸ö½áµã£»ÈôÓöµ½1£¬ÔòÑ¡ÔñÓÒ·ÖÖ§×ßÏòÏÂÒ»¸ö½áµã£¬Ö±ÖÁµ½´ïÒ»¸öÊ÷Ò¶½áµã£¬±ãÇóµÃÏìÓ¦×Ö·û¡£
¡¡¡¡¡¤ Á·Ï°
¡¡¡¡ÓÐ5¸ö´øȨ½áµã {A,B,C,D,E}£¬ÆäȨֵ·Ö±ðΪW={10,30,40,15,6}£¬È¨Öµ×÷Ϊ½áµãÊý¾Ý£¬»æÖÆÒ»¿Å¹þ·òÂü£¬²¢±àд¹þ·òÂü±àÂë¡£
¡¡¡¡A£º1111
¡¡¡¡B£º10
¡¡¡¡C£º0
¡¡¡¡D£º110
¡¡¡¡E£º1110
¡¡¡¡±àÂ룺±àÂë×Ö·û´® AABBEDCC¨C>111111111010111011000
¡¡¡¡1.5.5 ¹þ·òÂü±àÂëÀà
¡¡¡¡¡¤ n¸öȨֵ£¬×é³É¹þ·òÂüÊ÷½Úµã¸öÊý£º2n-1
¡¡¡¡¡¤ ¹þ·òÂü½áµãÀà
¡¡¡¡public class HuffmanNode {
¡¡¡¡    public int weight;// Ȩֵ
¡¡¡¡    public int flag; // ½ÚµãÊÇ·ñ¼ÓÈë¹þ·òÂüÊ÷µÄ±êÖ¾
¡¡¡¡    public HuffmanNode parent,lchild,rchild; // ¸¸½Úµã¼°×óÓÒº¢×Ó½Úµã
¡¡¡¡    // ¹¹ÔìÒ»¸ö¿Õ½Úµã
¡¡¡¡    public HuffmanNode(){
¡¡¡¡        this(0);
¡¡¡¡    }
¡¡¡¡    // ¹¹ÔìÒ»¸ö¾ßÓÐȨֵµÄ½Úµã
¡¡¡¡    public HuffmanNode(int weight){
¡¡¡¡        this.weight = weight;
¡¡¡¡        flag=0;
¡¡¡¡        parent=lchild=rchild=null;
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡¡¤ ¹þ·òÂü±àÂëÀà
¡¡¡¡public class HuffmanTree {
¡¡¡¡    // Çó¹þ·òÂü±àÂëµÄËã·¨£¬w´æ·Ån¸ö×Ö·ûµÄȨֵ(¾ù>0)
¡¡¡¡    public int[][] huffmanCoding(int[] W){
¡¡¡¡        int n = W.length;  // ×Ö·û¸öÊý
¡¡¡¡        int m = 2*n -1;   //¹þ·òÂüÊ÷µÄ½ÚµãÊý
¡¡¡¡        // ¹¹Ôìn¸ö¾ßÓÐȨֵµÄ½Úµã
¡¡¡¡        HuffmanNode[] HN = new HuffmanNode[m];
¡¡¡¡        int i = 0;
¡¡¡¡        for (; i<n ; i++) {
¡¡¡¡            HN[i] = new HuffmanNode(W[i]);
¡¡¡¡        }
¡¡¡¡        // ´´½¨¹þ·òÂüÊ÷
¡¡¡¡        for (i = n;  i<m ; i++) {
¡¡¡¡            // ÔÚHN[0...1]Ñ¡Ôñ²»ÔÚ¹þ·òÂüÊ÷ÖУ¬ÇÒȨֵweight×îСµÄÁ½¸ö½Úµãmin1ºÍmin2
¡¡¡¡            HuffmanNode min1 = selectMin(HN,i-1);
¡¡¡¡            min1.flag = 1;
¡¡¡¡            HuffmanNode min2 = selectMin(HN,i-1);
¡¡¡¡            min2.flag = 1;
¡¡¡¡            // ¹¹Ôì min1ºÍmin2µÄ¸¸½Úµã£¬²¢Ð޸ĸ¸½ÚµãµÄȨֵ
¡¡¡¡            HN[i] = new HuffmanNode();
¡¡¡¡            min1.parent=HN[i];
¡¡¡¡            min2.parent=HN[i];
¡¡¡¡            HN[i].lchild = min1;
¡¡¡¡            HN[i].rchild = min2;
¡¡¡¡            HN[i].weight = min1.weight+min2.weight;
¡¡¡¡        }
¡¡¡¡        //  ´ÓÒ¶×Óµ½¸ù ÄæÏòÇóÿ¸ö×Ö·ûµÄ¹þ·òÂü±àÂë
¡¡¡¡        int[][] HuffCode = new int[n][n]; // ·ÖÅän¸ö×Ö·û±àÂë´æ´¢¿Õ¼ä
¡¡¡¡        for (int j =0;j<n;j++){
¡¡¡¡            // ±àÂëµÄ¿ªÊ¼Î»Ö㬳õʼ»¯ÎªÊý×éµÄ½áβ
¡¡¡¡            int start = n-1;
¡¡¡¡            // ´ÓÒ¶×ӽڵ㵽¸ù£¬ÄæÏòÇó±àÂë
¡¡¡¡            for(HuffmanNode c = HN[j],p=c.parent;p!=null;c=p,p=p.parent){
¡¡¡¡                if(p.lchild.equals(c)){
¡¡¡¡                    HuffCode[j][start--]=0;
¡¡¡¡                }else{
¡¡¡¡                    HuffCode[j][start--]=1;
¡¡¡¡                }
¡¡¡¡            }
¡¡¡¡            // ±àÂëµÄ¿ªÊ¼±ê־Ϊ-1£¬±àÂëÊÇ-1Ö®ºóµÄ01ÐòÁÐ
¡¡¡¡            HuffCode[j][start] = -1;
¡¡¡¡        }
¡¡¡¡        return HuffCode;
¡¡¡¡    }
¡¡¡¡    // ÔÚHN[0...1]Ñ¡Ôñ²»ÔÚ¹þ·òÂüÊ÷ÖУ¬ÇÒȨֵweight×îСµÄÁ½¸ö½Úµãmin1ºÍmin2
¡¡¡¡    private HuffmanNode selectMin(HuffmanNode[] HN, int end) {
¡¡¡¡        // Çó ²»ÔÚ¹þ·òÂüÊ÷ÖУ¬ weight×îСֵµÄÄǸö½Úµã
¡¡¡¡        HuffmanNode min = HN[end];
¡¡¡¡        for (int i = 0; i < end; i++) {
¡¡¡¡            HuffmanNode h = HN[i];
¡¡¡¡            // ²»ÔÚ¹þ·òÂüÊ÷ÖУ¬ weight×îСֵ
¡¡¡¡            if(h.flag == 0 && h.weight<min.weight){
¡¡¡¡                min = h;
¡¡¡¡            }
¡¡¡¡        }
¡¡¡¡        return min;
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡¡¤ ¹þ·òÂü±àÂë»áÓÃÀàËÆÈçϸñʽ½øÐд洢
¡¡¡¡²âÊÔÀࣺ
¡¡¡¡public class Demo02 {
¡¡¡¡    public static void main(String[] args) {
¡¡¡¡        // Ò»×éȨֵ
¡¡¡¡        int[] W = {6,30,8,9,15,24,4,12};
¡¡¡¡        // ´´½¨¹þ·òÂüÊ÷
¡¡¡¡        HuffmanTree tree = new HuffmanTree();
¡¡¡¡        // Çó¹þ·òÂü±àÂë
¡¡¡¡        int[][] HN = tree.huffmanCoding(W);
¡¡¡¡        //´òÓ¡±àÂë
¡¡¡¡        System.out.println("¹þ·òÂü±àÂëÊÇ£º ");
¡¡¡¡        for (int i = 0; i < HN.length; i++) {
¡¡¡¡            System.out.print(W[i]+" ");
¡¡¡¡            for (int j = 0; j < HN[i].length; j++) {
¡¡¡¡                if(HN[i][j] == -1){
¡¡¡¡                    for (int k = j+1; k <HN[i].length ; k++) {
¡¡¡¡                        System.out.print(HN[i][k]);
¡¡¡¡                    }
¡¡¡¡                    break;
¡¡¡¡                }
¡¡¡¡            }
¡¡¡¡            System.out.println();
¡¡¡¡        }
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡1.6 Ê÷ÓëÉ­ÁÖ
¡¡¡¡1.6.1 ת»»¸ÅÊö
¡¡¡¡Ê÷Óë¶þ²æÊ÷Ö®¼ä¡¢É­ÁÖÓë¶þ²æÊ÷Ö®¼ä¿ÉÒÔÏ໥ת»»£¬¶øÇÒÕâÖÖת»»ÊÇÒ»Ò»¶ÔÓ¦µÄ¡£
¡¡¡¡1.6.2 Ê÷ת»»³É¶þ²æÊ÷
¡¡¡¡Ê÷ת»»³É¶þ²æÊ÷¿É¹éÄÉ3²½Ö裺¼ÓÏß¡¢É¾Ïß¡¢Ðýת¡£
¡¡¡¡¼ÓÏߣº½«Ê÷ÖÐËùÓÐÏàÁÚµÄÐÖµÜÖ®¼ä¼ÓÒ»ÌõÁ¬Ïß¡£
¡¡¡¡É¾Ïߣº¶ÔÊ÷ÖеÄÿһ¸ö½áµã£¬Ö»±£ÁôËüÓëµÚ1¸öº¢×Ó½áµãÖ®¼äµÄÁ¬Ïߣ¬É¾È¥ËüÓëÆäËûº¢×Ó½áµãÖ®¼äµÄÁ¬Ïß¡£
¡¡¡¡Ðýת£ºÒÔÊ÷µÄ¸ù½áµãΪÖáÐÄ£¬½«Ê÷ƽÃæ˳ʱÕëÐýתһ¶¨½Ç¶È²¢×öÊʵ±µÄµ÷Õû£¬Ê¹µÃת»¯ºóËùµÃ¶þ²æÊ÷¿´ÆðÀ´±È½Ï¹æÕû¡£
¡¡¡¡ÓÉÊ÷ת»»³ÉµÄ¶þ²æÊ÷ÓÀÔ¶ÊÇÒ»¿Ã¸ù½áµãµÄÓÒ×ÓÊ÷Ϊ¿ÕµÄ¶þ²æÊ÷¡£
¡¡¡¡1.6.3 ¶þ²æÊ÷ת»»³ÉÊ÷
¡¡¡¡¶þ²æÊ÷ת»»³ÉÊ÷ÊÇÊ÷ת»»¶þ²æÊ÷µÄÄæ¹ý³Ì¡£
¡¡¡¡Ê÷ת»»³É¶þ²æÊ÷¿É¹éÄÉ3²½Ö裺¼ÓÏß¡¢É¾Ïß¡¢Ðýת
¡¡¡¡¼ÓÏߣºÈôij½áµãÊÇË«Ç×½áµãµÄ×óº¢×Ó£¬Ôò½«¸Ã½áµãÑØ×ÅÓÒ·ÖÖ§ÏòϵÄËùÓнáµãÓë¸Ã½áµãµÄË«Ç×½áµãÓÃÏßÁ¬½Ó¡£
¡¡¡¡É¾³ý£º½«Ê÷ÖÐËùÓÐË«Ç×½áµãÓëÓÒº¢×Ó½áµãµÄÁ¬Ïßɾ³ý¡£
¡¡¡¡Ðýת£º¶Ô¾­¹ý£¨1£©¡¢£¨2£©Á¸²¹ºóËùµÃµÄÊ÷ÒÔ¸ù½áµãΪÖáÐÄ£¬°´ÄæʱÕë·½ÏòÐýתһ¶¨µÄ½Ç¶È£¬²¢×öÊʵ±µ÷Õû£¬Ê¹µÃת»¯ºóËùµÃµÄÊ÷¿´ÆðÀ´±È½Ï¹æÕû¡£
¡¡¡¡1.6.4 É­ÁÖÓë¶þ²æÊ÷»¥×ª
¡¡¡¡É­ÁÖÊÇÓÉÈô¸ÉÊ÷×é³É£¬ÈκÎÒ»¿ÃÊ÷ºÍÊ÷¶ÔÓ¦µÄ¶þ²æÊ÷ÆäÓÒ×ÓÊ÷Ò»¶¨Êǿյġ£
¡¡¡¡¸ù¾ÝÕâ¸ö¹æÂÉ¿ÉÒԵõ½É­ÁÖת»¯³É¶þ²æÊ÷µÄ·½·¨£º
¡¡¡¡½«É­ÁÖÖÐÿ¿ÃÊ÷ת»¯³É¶þ²æÊ÷¡£
¡¡¡¡°´ÕÕÉ­ÁÖµÄÏȺó˳Ðò£¬½«Ò»¿Å¶þ²æÊ÷ÊÓΪǰһ¿Ã¶þ²æÊ÷µÄÓÒ×ÓÊ÷ÒÀ´ÎÁ´½ÓÆðÀ´£¬´Ó¶ø¹¹³ÉÒ»¿Å¶þ²æÊ÷¡£
¡¡¡¡½«¶þ²æÊ÷ת»¯³ÉÉ­ÁÖÕýºÃÊÇÕâ¸ö¹ý³ÌÏà·´¡£
¡¡¡¡1.6.5 Ê÷µÄ´æ´¢½á¹¹
¡¡¡¡Ê÷µÄ4ÖÖÁ´Ê½´æ·Å·½Ê½£º
¡¡¡¡1. Ë«Ç×Á´±í´æ´¢½á¹¹
¡¡¡¡2. º¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡3. Ë«Ç׺¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡4. º¢×ÓÐÖµÜÁ´±í´æ´¢½á¹¹£¨ÖصãÕÆÎÕ£©
¡¡¡¡1£©Ë«Ç×Á´±í´æ´¢½á¹¹
¡¡¡¡ÒÔÒ»×éµØÖ·Á¬ÐøµÄ´æ´¢µ¥Ôª´æ·ÅÊ÷Öеĸ÷¸ö½áµã£¬Ã¿¸ö½áµãÓÐÁ½¸öÓò£º
¡¡¡¡Êý¾ÝÓò£ºÓÃÓÚ´æ·ÅÊ÷ÖиýáµãµÄÖµ¡£
¡¡¡¡Ö¸ÕëÓò£ºÓÃÓÚ´æ·Å¸Ã½áµãµÄË«Ç×½áµãÔÚ´æ´¢½á¹¹ÖеÄλÖá£
¡¡¡¡Óŵ㣺²éÕÒÒ»¸öÖ¸¶¨½áµãµÄË«Ç×½áµã·Ç³£ÈÝÒס£
¡¡¡¡È±µã£º²éÕÒÖ¸¶¨½áµãµÄº¢×Ó½áµã£¬ÐèҪɨÃèÕû¸öÁ´±í¡£
¡¡¡¡2£©º¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡ÒÔÒ»×éµØÖ·Á¬ÐøµÄ´æ´¢µ¥ÔªÀ´´æ·ÅÊ÷Öеĸ÷¸ö½áµã£¬Ã¿Ò»¸ö½áµãÓÐÁ½¸öÓò
¡¡¡¡Êý¾ÝÓò£º´æ·Å¸Ã½áµãµÄÖµ
¡¡¡¡Ö¸ÕëÓò£ºÓÃÓÚ´æ·Å¸Ã½áµãµÄº¢×ÓÁ´±íµÄÍ·Ö¸Õë¡£
¡¡¡¡Óŵ㣺±ãÓÚʵÏÖ²éÕÒÊ÷ÖÐÖ¸¶¨½áµãµÄº¢×Ó½áµã¡£
¡¡¡¡È±µã£º²»±ãÓÚ²éÕÒÖ¸¶¨½áµãµÄË«Ç×½áµã¡£
¡¡¡¡3£©Ë«Ç׺¢×ÓÁ´±í´æ´¢½á¹¹
¡¡¡¡Ó뺢×ÓÁ´±í´æ´¢½á¹¹ÀàËÆ£¬ÒÔÒ»×éµØÖ·Á¬ÐøµÄ´æ´¢µ¥ÔªÀ´´æ·ÅÊ÷Öеĸ÷¸ö½áµã£¬Ã¿Ò»¸ö½áµãÓÐÈý¸öÓò
¡¡¡¡Êý¾ÝÓò£º´æ·Å¸Ã½áµãµÄÖµ
¡¡¡¡¸¸Ö¸ÕëÓò£ºÓÃÓÚ´æ·ÅË«Ç×½áµãÔÚÊý×éÖеÄλÖÃ
¡¡¡¡×ÓÖ¸ÕëÓò£ºÓÃÓÚ´æ·Å¸Ã½áµãµÄº¢×ÓÁ´±íµÄÍ·Ö¸Õë¡£
¡¡¡¡4£©º¢×ÓÐÖµÜÁ´±í´æ´¢½á¹¹£¨ÖصãÕÆÎÕ£©
¡¡¡¡º¢×ÓÐÖµÜÁ´±í´æ·Å£¬ÓÖ³ÆΪ¡°×ó×Ó/ÓÒÐÖ¡±¶þ²æÁ´Ê½´æ´¢½á¹¹¡£
¡¡¡¡×óÖ¸Õ룺ָÏò¸Ã½áµãµÄµÚÒ»¸öº¢×Ó
¡¡¡¡ÓÒÖ¸Õ룺ָÏò¸Ã½áµãµÄÓÒÁÚÐÖµÜ
¡¡¡¡½áµãÀࣺ
¡¡¡¡public class CSTreeNode {
¡¡¡¡    public Object data;//½áµãµÄÊý¾ÝÓò
¡¡¡¡    publicCSTreeNode firstChild, nextsibling;//×óº¢×Ó¡¢ÓÒÐÖµÜ
¡¡¡¡}
¡¡¡¡1.6.6 Ê÷µÄ±éÀú
¡¡¡¡Ê÷µÄ±éÀúÖ÷ÒªÓУºÏȸù±éÀú¡¢ºó¸ù±éÀú¡¢²ã´Î±éÀú¡£
¡¡¡¡1£©Ïȸù±éÀú
¡¡¡¡ÈôÊ÷Ϊ·Ç¿Õ£¬Ôò
¡¡¡¡1. ·ÃÎʸù½Úµã¡£
¡¡¡¡2. ´Ó×óµ½ÓÒÒÀ´ÎÏȸù±éÀú¸ù½ÚµãµÄÿһ¿Å×ÓÊ÷¡£
¡¡¡¡Ïȸù±éÀúÐòÁУº
¡¡¡¡ABEFCDGHIJK
¡¡¡¡public void preRootTraverse(CSTreeNode T) {
¡¡¡¡    if(T != null) {
¡¡¡¡        System.out.print(T.data);
¡¡¡¡        preRootTraverse(T.firstChild);//Ïȸù±éÀúÊ÷Öиù½ÚµãµÄµÚÒ»¸ö×ÓÊ÷
¡¡¡¡        preRootTraverse(T.nextsibling);//Ïȸù±éÀúÊ÷Öиù½ÚµãµÄÆäËû×ÓÊ÷
¡¡¡¡    }
¡¡¡¡}
¡¡¡¡2£©ºó¸ù±éÀú
¡¡¡¡ÈôÊ÷Ϊ·Ç¿Õ£¬Ôò
¡¡¡¡1. ´Ó×óµ½ÓÒÒÀ´Îºó¸ù±éÀú¸ù½ÚµãµÄÿһ¿Ã×ÓÊ÷
¡¡¡¡2. ·ÃÎʸù½Úµã
¡¡¡¡ºó¸ù±éÀúÐòÁУº
¡¡¡¡EFBCIJKHGDA
¡¡¡¡Ê¹Óú¢×ÓÐÖµÜÁ´±í´æ´¢µÄÊ÷£

TAG: Ëã·¨ Êý¾Ý½á¹¹

 

ÆÀ·Ö£º0

ÎÒÀ´ËµÁ½¾ä