[Powered by Google Translate] [סעקשאַן 7: מער באַקוועם] [ראָב באָוודען] [האַרוואַרד אוניווערסיטעט] [דאס איז קס50] [CS50.TV] אַלע רעכט. אַזוי ווי איך געזאגט אין מיין בליצפּאָסט, דאָס איז געגאנגען צו זייַן אַ ביינערי-בוים-אינטענסיווע אָפּטיילונג. אבער עס זענען נישט אַז פילע שאלות. אַזוי מיר רע געגאנגען צו פּרובירן און ציען אויס יעדער קשיא און גיין אין ווייטיקדיק דעטאַל פון אַלע דער בעסטער וועגן פון טאן זאכן. אַזוי רעכט בייַ די אָנהייב, מיר גיין דורך מוסטער דראַווינגס פון ביינערי ביימער און שטאָפּן. אַזוי דאָ, "געדענק אַז אַ ביינערי בוים האט נאָודז ענלעך צו יענע פון ​​אַ לינגקט רשימה, חוץ אַנשטאָט פון איין טייַטל דאָרט זענען צוויי: איינער פֿאַר די לינקס 'קינד' און איינער פֿאַר די רעכט 'קינד'. " אַזוי אַ ביינערי בוים איז פּונקט ווי אַ לינגקט רשימה, אַחוץ די סטרוקט איז געגאנגען צו האָבן צוויי פּוינטערז. עס ס טרינאַרי ביימער, וואָס זענען געגאנגען צו האָבן דרייַ פּוינטערז, עס זענען N-אַרי ביימער, וואָס נאָר האָבן אַ דזשאַנעריק טייַטל אַז איר דעמאָלט האָבן צו מאַללאָק צו זייַן גרויס גענוג צו האָבן גענוג פּוינטערז צו אַלע די מעגלעך קינדער. אַזוי ביינערי בוים נאָר כאַפּאַנז צו האָבן אַ קעסיידערדיק נומער פון צוויי. אויב איר ווילן, איר קענען געבן אַ לינגקט רשימה ווי אַ ונאַרי בוים, אָבער איך טאָן ניט טראַכטן ווער עס יז רופט עס וואָס. "ציען אַ באָקסעס-און-אַראָוז דיאַגראַמע פון ​​אַ ביינערי בוים נאָדע מיט נייט ס באַליבט נומער, 7, ווו יעדער קינד טייַטל איז נאַל. " אַזוי יפּאַד מאָדע. עס ס געגאנגען צו זייַן שיין סטרייטפאָרווערד. מיר רע נאָר געגאנגען צו האָבן אַ נאָדע, איך וועט ציען עס ווי אַ קוואַדראַט. און איך וועט ציען דעם וואַלועס אין דאָ. אַזוי די ווערט וועט גיין אין דאָ, און דעמאָלט אַראָפּ דאָ מיר וועט האָבן די לינקס טייַטל אויף די לינקס און די רעכט טייַטל אויף די רעכט. און עס איז זייער פיל אַזוי קאַנווענשאַן צו רופן עס לינקס און רעכט, די טייַטל נעמען. ביידע פון ​​די ביסט געגאנגען צו זייַן נאַל. אַז וועט נאָר זייַן נאַל, און אַז וועט נאָר זייַן נאַל. אָוקיי. אַזוי צוריק צו דאָ. "מיט אַ לינגקט רשימה, מיר נאָר געהאט צו קראָם אַ טייַטל צו דער ערשטער נאָדע אין דער רשימה אין סדר צו געדענקען די גאנצע לינגקט רשימה, אָדער די גאנצע רשימה. פּונקט אַזוי, מיט ביימער, מיר נאָר האָבן צו קראָם אַ טייַטל צו אַ איין נאָדע אין סדר צו געדענקען די גאנצע בוים. דאס נאָדע איז קייל דער 'וואָרצל' פון די בוים. בויען אויף דיין דיאַגראַמע פון ​​פריער אָדער ציען אַ נייַ איינער אַזאַ וואָס איר האָבן אַ באָקסעס-און-אַראָוז דיפּיקשאַן פון אַ ביינערי בוים מיט דעם די ווערט 7, דעמאָלט 3 אין די לינקס, דעמאָלט 9 אויף די רעכט, און דעמאָלט 6 אויף די רעכט פון די 3. " זאל ס זען אויב איך קענען געדענקען אַלע פון ​​וואָס אין מיין קאָפּ. אַזוי דעם איז געגאנגען צו זייַן אונדזער וואָרצל אַרויף דאָ. מיר וועט האָבן עטלעכע טייַטל ערגעץ, עפּעס אַז מיר וועט רופן וואָרצל, און עס ס פּוינטינג צו דעם באָכער. איצט צו מאַכן אַ נייַ נאָדע, וואָס טאָן מיר האָבן, 3 אויף די לינקס? אַזוי אַ נייַ נאָדע מיט 3, און עס טכילעס ווייזט נאַל. איך וועט נאָר לייגן ען איצט מיר ווילן צו מאַכן אַז גיין צו די לינקס פון 7. אַזוי מיר טוישן דעם טייַטל צו איצט פונט צו דעם באָכער. און מיר טאָן די זעלבע. מיר ווילן אַ 9 איבער דאָ וואָס טכילעס נאָר זאגט נאַל. מיר רע געגאנגען צו טוישן דעם טייַטל, פונט צו 9, און איצט מיר וועלן צו שטעלן 6 צו די רעכט פון 3. אַזוי עס ס געגאנגען צו - מאַכן אַ 6. און אַז באָכער וועט פונט דאָרט. אָוקיי. אַזוי אַז ס אַלע עס פרעגט אונדז צו טאָן. איצט לאָזן ס גיין איבער עטלעכע טערמינאָלאָגיע. מיר שוין גערעדט וועגן ווי די שורש פון די בוים איז דער שפּיץ-רובֿ נאָדע אין דעם בוים. דער איינער מיט 7. די נאָודז בייַ די דנאָ פון די בוים זענען גערופן די בלעטער. קיין נאָדע וואָס נאָר האט נאַל ווי זייַן קינדער איז אַ בלאַט. אַזוי עס איז מעגלעך, אויב אונדזער ביינערי בוים איז נאָר אַ איין נאָדע, אַז אַ בוים איז אַ בלאַט, און אַז ס עס. "דער 'הייך' פון די בוים איז די נומער פון האָפּס איר האָבן צו מאַכן צו באַקומען פון די שפּיץ צו אַ בלאַט ". מיר וועט באַקומען אין, אין אַ רגע, די חילוק צווישן באַלאַנסט און אַנבאַלאַנסט ביינערי ביימער, אָבער פֿאַר איצט, די קוילעלדיק הייך פון דעם בוים איך וואָלט זאָגן איז 3, כאָטש אויב איר ציילן די נומער פון האָפּס איר האָבן צו מאַכן אין סדר צו באַקומען צו 9, דעמאָלט עס ס 'טאַקע נאָר אַ הייך פון 2. רעכט איצט דאָס איז אַ אַנבאַלאַנסט ביינערי בוים, אָבער מיר וועט גערעדט וועגן באַלאַנסט ווען עס געץ צו זייַן באַטייַטיק. אַזוי איצט מיר קענען רעדן וועגן נאָודז אין אַ בוים אין תּנאָים קאָרעוו צו די אנדערע נאָודז אין דעם בוים. אַזוי איצט מיר האָבן עלטערן, קינדער, סיבלינגז, אָוועס, און קינדסקינדער. זיי זענען שיין פּראָסט זינען, וואָס זיי מיינען. אויב מיר פרעגן - עס 'ס עלטערן. אַזוי וואָס איז דער פאָטער פון 3? [סטודענטן] 7. >> יאָ. דער פאָטער איז נאָר געגאנגען צו זייַן וואָס ווייזט צו איר. דעמאָלט וואָס זענען די קינדער פון 7? [סטודענטן] 3 און 9. >> יאָ. נאָטיץ אַז "קינדער" ממש מיטל קינדער, אַזוי 6 וואָלט נישט צולייגן, ווייַל עס ס ווי אַ ייניקל. אבער דעמאָלט אויב מיר גיין קינדסקינדער, אַזוי וואָס זענען די קינדסקינדער פון 7? [סטודענטן] 3, 6 און 9. >> יאָ. די קינדסקינדער פון דער וואָרצל נאָדע איז געגאנגען צו זייַן אַלץ אין דער בוים, חוץ אפֿשר דער וואָרצל נאָדע זיך, אויב איר טאָן נישט וועלן צו באַטראַכטן אַז אַ אָפּשטאַמלינג. און לעסאָף, אָוועס, אַזוי עס ס די פאַרקערט ריכטונג. אַזוי וואָס זענען די אָוועס פון 6? [סטודענטן] 3 און 7. >> יאָ. 9 איז נישט אַרייַנגערעכנט. עס ס נאָר די דירעקט ייכעס צוריק צו דער וואָרצל איז געגאנגען צו זייַן דיין אָוועס. "מיר זאָגן אַז אַ ביינערי בוים איז 'באפוילן' אויב פֿאַר יעדער נאָדע אין די בוים, אַלע פון ​​זייַן קינדסקינדער אויף די לינקס האָבן לעסער וואַלועס און אַלע פון ​​די אָנעס אויף די רעכט האָבן גרעסער וואַלועס. פֿאַר בייַשפּיל, דער בוים אויבן איז באפוילן אָבער עס ס 'נישט דער נאָר מעגלעך באפוילן אָרדענונג ". איידער מיר באַקומען צו אַז, אַ באפוילן ביינערי בוים איז אויך באקאנט ווי אַ ביינערי זוכן בוים. דאָ מיר פּאַסירן צו זייַן פאַך עס אַ באפוילן ביינערי בוים, אָבער איך האב קיינמאָל געהערט עס גערופן אַ באפוילן ביינערי בוים פריער, און אויף אַ ויספרעג מיר זענען פיל מער מסתּמא צו שטעלן ביינערי זוכן בוים. זיי ניטאָ איין און די זעלבע, און עס ס וויכטיק איר דערקענען די דיסטינגקשאַן צווישן ביינערי בוים און ביינערי זוכן בוים. א ביינערי בוים איז נאָר אַ בוים וואָס ווייזט צו צוויי זאכן. יעדער נאָדע פונקטן צו צוויי זאכן. עס איז קיין ריזאַנינג וועגן די וואַלועס אַז עס ווייזט צו. אַזוי ווי איבער דאָ, זינט עס ס אַ ביינערי זוכן בוים, מיר וויסן אַז אויב מיר גיין לינקס פון 7, דעריבער אַלע פון ​​די וואַלועס אַז מיר קענען עפשער דערגרייכן דורך געגאנגען לינקס פון 7 האָבן צו זייַן ווייניקער ווי 7. נאָטיץ אַז אַלע די וואַלועס ווייניקער ווי 7 ביסט 3 און 6. יענע זענען אַלע צו די לינקס פון 7. אויב מיר גיין צו די רעכט פון 7, אַלץ האט צו זייַן גרעסער ווי 7, אַזוי 9 איז צו די רעכט פון 7, אַזוי מיר רע גוט. דאס איז נישט דער פאַל פֿאַר אַ ביינערי בוים, פֿאַר אַ רעגולער ביינערי בוים מיר קענען נאָר האָבן 3 בייַ די שפּיץ, 7 צו די לינקס, 9 צו די לינקס פון 7; דאָרט ס קיין אָרדערינג פון וואַלועס כוואַצאָועווער. איצט, מיר וועלן נישט פאקטיש טאָן דעם ווייַל עס ס טידיאַס און ומנייטיק, אָבער "פּרובירן צו ציען ווי פילע באפוילן ביימער ווי איר קענען טראַכטן פון ניצן די נומערן 7, 3, 9, און 6. ווי פילע בוילעט עריינדזשמאַנץ זענען דאָרט? וואָס איז די הייך פון יעדער איינער? " מיר וועט טאָן אַ פּאָר, אָבער דער הויפּט געדאַנק איז, דאָס איז אין קיין וועג אַ יינציק פאַרטרעטונג פון אַ ביינערי בוים מיט די וואַלועס. אַלע מיר דאַרפֿן איז עטלעכע ביינערי בוים וואָס כּולל 7, 3, 6, און 9. אן אנדער מעגלעך גילטיק איינער וואָלט זייַן דער וואָרצל איז 3, גיין צו די לינקס און עס ס 6, גיין צו די לינקס און עס ס 7, גיין צו די לינקס און עס ס '9. וואָס איז אַ בישליימעס גילטיק ביינערי זוכן בוים. עס ס ניט זייער נוציק, ווייַל עס ס נאָר ווי אַ לינגקט רשימה און אַלע פון ​​די פּוינטערז זענען נאָר נאַל. אבער עס איז אַ גילטיק בוים. יאָ? [תּלמיד] צי נישט די וואַלועס האָבן צו זייַן גרעסער אויף די רעכט? אָדער איז דאָס -? >> די איך מענט צו גיין די אנדערע וועג. עס ס אויך - יאָ, לאָזן ס באַשטימען וואָס. 9, 7, 6, 3. גוט כאַפּן. עס נאָך האט צו פאָלגן וואָס אַ ביינערי בוים זוכן איז געמיינט צו טאָן. אַזוי אַלץ צו די לינקס האט צו זייַן ווייניקער ווי קיין געגעבן נאָדע. מיר קען נאָר מאַך, זאָגן, דעם 6 און לייגן עס דאָ. ניין, מיר קענען נישט. פארוואס טאָן איך האַלטן טאן וואָס? זאל ס טאָן - דאָ איז 6, דאָ איז 7, 6 פונקטן צו 3. דאס איז נאָך אַ גילטיק ביינערי זוכן בוים. וואָס איז פאַלש אויב איך - לאָזן ס זען אויב איך קענען קומען אַרויף מיט אַן אָרדענונג. יאָ, אָוקיי. אַזוי וואָס איז פאַלש מיט דעם בוים? איך טרעפן איך ווע שוין געגעבן איר אַ אָנצוהערעניש אַז עס איז עפּעס פאַלש מיט אים. פארוואס טאָן איך האַלטן טאן וואָס? אָוקיי. דאס קוקט גלייַך. אויב מיר קוקן אין יעדער נאָדע, ווי 7, דעריבער צו די לינקס פון 7 איז אַ 3. אַזוי מיר האָבן 3, די זאַך צו די רעכט פון 3 איז אַ 6. און אויב איר קוק בייַ 6, די זאַך צו די רעכט פון 6 איז אַ 9. אַזוי וואָס איז דאָס ניט אַ גילטיק ביינערי זוכן בוים? [סטודענטן] 9 איז נאָך צו די לינקס פון 7. >> יאָ. עס מוזן זייַן אמת אַז אַלע וואַלועס איר קענען עפשער דערגרייכן דורך געגאנגען צו די לינקס פון 7 זענען ווייניקער ווי 7. אויב מיר גיין לינקס פון 7, מיר באַקומען צו 3 און מיר קענען נאָך באַקומען צו 6, מיר קענען נאָך באַקומען צו 9, אָבער דורך בעת ניטאָ ווייניקער ווי 7, מיר זאָל ניט זייַן ביכולת צו באַקומען צו אַ נומער וואָס ס גרעסער ווי 7. אַזוי דאָס איז ניט אַ גילטיק ביינערי זוכן בוים. מייַן ברודער פאקטיש האט אַן אינטערוויו קשיא וואָס איז געווען בייסיקלי דעם, נאָר קאָד אַרויף עפּעס צו וואַלאַדייט צי אַ בוים איז אַ ביינערי זוכן בוים, און אַזוי דער ערשטער זאַך ער האט איז געווען נאָר טשעק צו זען אויב די לינק און רעכט זענען ריכטיק, און דעמאָלט יטעראַטע אַראָפּ דאָרט. אבער איר קענען ניט נאָר טאָן אַז; איר האָבן צו האַלטן שפּור פון די פאַקט אַז איצט אַז איך ווע ניטאָ לינקס פון 7, אַלץ אין דעם סובטרעע מוזן זייַן ווייניקער ווי 7. די ריכטיק אַלגערידאַם דאַרף צו האַלטן שפּור פון די גווול אַז די וואַלועס קענען עפשער פאַלן ין מיר וועלן נישט גיין דורך אַלע פון ​​זיי. עס איז אַ פייַן ריקעראַנס באַציונג, כאָטש מיר האָבן ניט גאַטאַן צו יענע, אָדער מיר וועלן נישט באַקומען צו יענע, דיפיינינג ווי פילע עס פאקטיש זענען. אַזוי עס זענען 14 פון זיי. דער געדאַנק פון ווי איר וואָלט טאָן עס מאַטאַמאַטיקלי איז ווי, איר קענען קלייַבן קיין איין איינער צו זייַן די וואָרצל נאָדע, און דעריבער אויב איך קלייַבן 7 צו זייַן די וואָרצל נאָדע, דעמאָלט דאָרט זענען, זאָגן, עטלעכע נומערן וואָס קענען גיין זייַן מיין לינקס נאָדע, און עס זענען עטלעכע נומערן וואָס קענען זייַן מיין רעכט נאָדע, אָבער אויב איך האָבן N גאַנץ נומערן, דעריבער די סומע וואָס קענען גיין צו די לינקס פּלוס די סומע וואָס קענען גיין צו די רעכט איז N - 1. אַזוי פון די רוען נומערן, זיי האָבן צו זייַן ביכולת צו גיין אָדער צו די לינקס אָדער די רעכט. עס מיינט שווער אַז, אויב איך שטעלן 3 ערשטער דעמאָלט אַלץ האט צו גיין צו די לינקס, אָבער אויב איך שטעלן 7, דעמאָלט עטלעכע זאכן קענען גיין די די לינקס און עטלעכע זאכן קענען גיין צו די רעכט. און דורך '3 ערשטער 'איך מענט אַלץ קענען גיין צו די רעכט. עס ס טאַקע, איר נאָר האָבן צו טראַכטן וועגן אים ווי, ווי פילע זאכן קענען גיין אויף די ווייַטער מדרגה פון דעם בוים. און עס קומט אויס צו זייַן 14; אָדער איר קענען ציען אַלע פון ​​זיי, און דאַן איר וועט באַקומען 14. געגאנגען צוריק דאָ, "אָרדערד ביינערי ביימער זענען קיל ווייַל מיר קענען זוכן דורך זיי אין אַ זייער ענלעך וועג צו שאַרף איבער אַ אויסגעשטעלט מענגע. צו טאָן אַזוי, מיר אָנהייבן בייַ די וואָרצל און אַרבעט אונדזער וועג אַראָפּ די בוים צו בלעטער, קאָנטראָלירונג יעדער נאָדע ס וואַלועס קעגן די וואַלועס מיר רע שאַרף פֿאַר. אויב די קראַנט נאָדע ס ווערט איז ווייניקער ווי דער ווערט מיר רע קוקן פֿאַר, איר גיין ווייַטער צו די נאָדע ס רעכט קינד. אַנדערש, איר גיין צו די נאָדע ס לינקס קינד. אין עטלעכע פונט, איר וועט אָדער געפֿינען די ווערט איר ניטאָ קוקן פֿאַר, אָדער איר וועט לויפן אין אַ נאַל, ינדאַקייטינג די ווערט 'ס נישט אין די בוים ". איך האָבן צו רידראָ דער בוים מיר האבן פריער; וואָס וועט נעמען אַ רגע. אבער מיר ווילן צו קוקן אַרויף צי 6, 10, און 1 ביסט אין דעם בוים. אַזוי וואָס עס איז געווען, 7, 9, 3, 6. אָוקיי. די נומערן איר ווילן צו קוק אַרויף, מיר ווילן צו קוקן אַרויף 6. ווי טוט דעם אַלגערידאַם אַרבעט? נו, מיר אויך האָבן עטלעכע וואָרצל טייַטל צו אונדזער בוים. און מיר וואָלט גיין צו דער וואָרצל און זאָגן, איז דאָס ווערט גלייַך צו דער ווערט מיר רע שאַרף פֿאַר? אַזוי מיר רע קוקן פֿאַר 6, אַזוי עס ס נישט גלייַך. אַזוי מיר האַלטן געגאנגען, און איצט מיר זאָגן, אָוקיי, אַזוי 6 איז ווייניקער ווי 7. טוט וואָס מיינען מיר וועלן צו גיין צו די לינקס, אָדער טאָן מיר וועלן צו גיין צו די רעכט? [תּלמיד] לעפט. >> יאָ. עס ס באטייטיק גרינגער, אַלע איר האָבן צו טאָן איז ציען איינער מעגלעך נאָדע פון ​​די בוים און דאַן איר דאָון - אַנשטאָט פון טריינג צו טראַכטן אין דיין קאָפּ, אָוקיי, אויב עס ס ווייניקער, טאָן איך גיין צו די לינקס אָדער גיין די רעכט, נאָר קוקן בייַ דעם בילד, עס ס זייער קלאָר אַז איך האָבן צו גיין צו די לינקס אויב דעם נאָדע איז גרעסער ווי די ווערט אַז איך בין קוקן פֿאַר. אַזוי איר גיין צו די לינקס, איצט איך בין בייַ 3. איך ווילן צו - 3 איז ווייניקער ווי די ווערט איך בין קוקן פֿאַר, וואָס איז 6. אַזוי מיר גיין צו די רעכט, און איצט איך סוף אַרויף בייַ 6, וואָס איז די ווערט איך בין קוקן פֿאַר, אַזוי איך צוריקקומען אמת. דער ווייַטער ווערט איך בין געגאנגען צו קוקן פֿאַר איז 10. אָוקיי. אַזוי 10, איצט, איז געגאנגען צו - שנייַדן אַוועק אַז - געגאנגען צו נאָכפאָלגן די וואָרצל. איצט, 10 איז געגאנגען צו זייַן גרעסער ווי 7, אַזוי איך ווילן צו קוקן צו די רעכט. איך בין געגאנגען צו קומען איבער דאָ, 10 איז געגאנגען צו זייַן גרעסער ווי 9, אַזוי איך בין געגאנגען צו ווילן צו קוקן צו די רעכט. איך קומען איבער דאָ, אָבער איבער דאָ איצט איך בין בייַ נאַל. וואָס טאָן איך טאָן אויב איך שלאָגן נאַל? [תּלמיד] צוריק פאַלש? >> יאָ. איך האט ניט געפֿינען 10. 1 איז געגאנגען צו זייַן אַ קימאַט יידעניקאַל פאַל, אַחוץ עס ס נאָר געגאנגען צו זייַן פליפּט; אַנשטאָט פון קוקן אַראָפּ די רעכט זייַט, איך בין געגאנגען צו קוקן אַראָפּ די לינקס זייַט. איצט איך טראַכטן מיר פאקטיש באַקומען צו קאָד. דאָ ס ווו - עפענען זיך די קס50 אַפּפּליאַנסע און נאַוויגירן דיין וועג דאָרט, אָבער איר קענען אויך נאָר טאָן עס אין די פּלאַץ. עס ס מיסטאָמע ידעאַל צו טאָן עס אין דעם פּלאַץ, ווייַל מיר קענען אַרבעטן אין דעם פּלאַץ. "ערשטער מיר וועט דאַרפֿן אַ נייַ טיפּ דעפֿיניציע פֿאַר אַ ביינערי בוים נאָדע מיט ינט וואַלועס. ניצן די בוילערפּלייט טיפּעדעף אונטן, שאַפֿן אַ נייַ טיפּ דעפֿיניציע פֿאַר אַ נאָדע אין אַ ביינערי בוים. אויב איר באַקומען סטאַק. . . "בלאַ, בלאַ, בלאַ. אָוקיי. אַזוי לאָזן ס שטעלן די בוילערפּלייט דאָ, טיפּעדעף סטרוקט נאָדע, און נאָדע. יאָ, אָוקיי. אַזוי וואָס זענען די פעלדער מיר רע געגאנגען צו וועלן אין אונדזער נאָדע? [תּלמיד] ינט און דעמאָלט צוויי פּוינטערז? >> ינט ווערט, צוויי פּוינטערז? ווי טאָן איך שרייַבן די פּוינטערז? [תּלמיד] סטרוקט. >> איך זאָל פארגרעסער ין יאָ, אַזוי סטרוקט נאָדע * לינקס, און סטרוקט נאָדע * רעכט. און געדענקען די דיסקוסיע פון ​​לעצטע צייַט, וואָס דאָס מאכט קיין זינען, דאָס מאכט קיין זינען, דאָס מאכט קיין זינען. איר דאַרפֿן אַלץ דאָרט אין סדר צו דעפינירן דעם רעקורסיווע סטרוקט. אָוקיי, אַזוי אַז ס וואָס אונדזער בוים איז געגאנגען צו קוקן ווי. אויב מיר האבן אַ טרינאַרי בוים, דעמאָלט אַ נאָדע זאל קוקן ווי ב 1, ב 2, סטרוקט נאָדע * ב3, ווו בייטן איז אַ צווייַג - פאקטיש, איך ווע מער געהערט עס לינקס, מיטן, רעכט, אָבער וועלכער. מיר נאָר זאָרגן וועגן ביינערי, אַזוי רעכט, לינקס. "איצט דערקלערן אַ גלאבאלע נאָדע * בייַטעוודיק פֿאַר דעם וואָרצל פון דעם בוים". אַזוי מיר ניטאָ ניט געגאנגען צו טאָן וואָס. אין סדר צו מאַכן דאס אַ ביסל מער שווער און מער דזשענראַלייזד, מיר וועלן נישט האָבן אַ גלאבאלע נאָדע בייַטעוודיק. אַנשטאָט, אין הויפּט מיר וועלן דערקלערן אַלע אונדזער נאָדע זאכן, און אַז מיטל וואָס ווייטער, ווען מיר אָנהייבן פליסנדיק אונדזער כּולל פונקציאָנירן און אונדזער אַרייַנלייגן פונקציאָנירן, אַנשטאָט פון אונדזער כּולל פונקציאָנירן נאָר ניצן דעם גלאבאלע נאָדע בייַטעוודיק, מיר רע געגאנגען צו האָבן עס נעמען ווי אַן אַרגומענט דער בוים וואָס מיר ווילן עס צו פּראָצעס. ווייל די גלאבאלע בייַטעוודיק האט געמיינט צו מאַכן דאס גרינגער. מיר רע געגאנגען צו מאַכן זאכן האַרדער. איצט נעמען אַ מינוט אָדער אַזוי צו נאָר טאָן דעם סאָרט פון זאַך, ווו ין פון הויפּט איר ווילן צו שאַפֿן דעם בוים, און אַז ס אַלע איר ווילן צו טאָן. פרובירט און בויען דעם בוים אין אייער הויפּט פֿונקציע. אָוקיי. אַזוי איר טאָן ניט אַפֿילו האָבן צו האָבן קאַנסטראַקטאַד דער בוים די גאנצע וועג נאָך. אבער ווער עס יז האָבן עפּעס איך קען ציען אַרויף צו ווייַזן ווי איינער זאל אָנהייבן קאַנסטראַקטינג אַזאַ אַ בוים? [תּלמיד] עמעצער ס באַנגינג, טריינג צו באַקומען אויס. [באָוודען] ווער עס יז באַקוועם מיט זייער בוים קאַנסטראַקשאַן? [תּלמיד] זיכער. עס ס ניט געטאן. >> עס ס פייַן. מיר קענען נאָר ענדיקן - אָה, קענען איר ראַטעווען אים? האָאָרייַ. אַזוי דאָ מיר האָבן - אָה, איך בין אַ ביסל שנייַדן אַוועק. בין איך זומד אין? פארגרעסער אין, מעגילע אויס. >> איך האב אַ קשיא. >> יאָ? [תּלמיד] ווען איר דעפינירן סטרוקט, זענען זאכן ווי ינישאַלייזד צו עפּעס? [באָוודען] נומ >> אָוקיי. אַזוי איר וואָלט האָבן צו ינישאַלייז - [באָוודען] נומ ווען איר דעפינירן, אָדער ווען איר דערקלערן אַ סטרוקט, עס איז נישט ינישאַלייזד דורך פעליקייַט; עס ס נאָר ווי אויב איר דערקלערן אַ ינט. עס ס פּונקט די זעלבע זאַך. עס ס ווי יעדער פון זייַן יחיד פעלדער קענען האָבן אַ מיסט ווערט אין עס. >> און איז עס מעגלעך צו דעפינירן - אָדער צו דערקלערן אַ סטרוקט אין אַ וועג וואָס עס טוט ינישאַלייז זיי? [באָוודען] יא. אַזוי, דורכוועג יניטיאַליזאַטיאָן סינטאַקס איז געגאנגען צו קוקן ווי - עס ס צוויי וועגן מיר קענען טאָן דעם. איך טראַכטן מיר זאָל צונויפנעמען עס צו מאַכן זיכער קלאַנג אויך טוט דאָס. דער סדר פון טענות וואָס קומט אין די סטרוקט, איר שטעלן ווי דער סדר פון טענות ין פון די געגרייַזלט ברייסאַז. אַזוי אויב איר ווילן צו ינישאַלייז עס צו 9 און לינקס זייַן נאַל און דעמאָלט רעכט זייַן נאַל, עס וואָלט זייַן 9, נאַל, נאַל. דער אָלטערנאַטיוו איז, און דער רעדאַקטאָר טוט ניט ווי דעם סינטאַקס, און עס מיינט איך ווילן אַ נייע בלאָק, אָבער דער אָלטערנאַטיוו איז עפּעס ווי - דאָ, איך וועט לייגן עס אויף אַ נייע ליניע. איר קענען בפירוש זאָגן, איך פאַרגעסן די פּינטלעך סינטאַקס. אַזוי איר קענען בפירוש אַדרעס זיי דורך נאָמען, און זאָגן, . C, אָדער. ווערט = 9,. לינקס = נאַל. איך בין געסינג די דאַרפֿן צו זייַן קאָמעס. . רעכט = נאַל, אַזוי דעם וועג איר טאָן ניט פאקטיש דאַרפֿן צו וויסן די סדר פון די סטרוקט, און ווען איר ניטאָ לייענען דעם, עס ס פיל מער עקספּליסיט וועגן וואָס די ווערט ס זייַענדיק ינישאַלייזד צו. דאס כאַפּאַנז צו זייַן איינער פון די זאכן וואָס - אַזוי, פֿאַר די רובֿ טייל, C + + איז אַ סופּערסעט פון סי איר קענען נעמען C קאָד, מאַך עס איבער צו C + +, און עס זאָל צונויפנעמען. דאס איז איינער פון די זאכן וואָס C + + טוט נישט שטיצן, אַזוי מען טענד ניט צו טאָן עס. איך טאָן ניט וויסן אויב אַז ס די בלויז סיבה מענטשן טענד ניט צו טאָן עס, אָבער דער פאַל ווו איך דארף צו נוצן עס דארף צו אַרבעטן מיט C + +, און אַזוי איך קען נישט נוצן דעם. אן אנדער בייַשפּיל פון עפּעס וואָס טוט ניט אַרבעטן מיט C + + איז ווי מאַללאָק קערט אַ "פּאָסל *," טעקניקלי, אָבער איר קען נאָר זאָגן טשאַר * X = מאַללאָק וועלכער, און עס וועט אויטאָמאַטיש זייַן געשטאַלט צו אַ טשאַר *. אַז אָטאַמאַטיק געשטאַלט טוט נישט פּאַסירן אין C + +. וואָס וואָלט נישט צונויפנעמען, און איר וואָלט בפירוש דאַרפֿן צו זאָגן טשאַר *, מאַללאָק, וועלכער, צו וואַרפן עס צו אַ טשאַר *. עס זענען נישט פילע זאכן וואָס C און C + + דיסאַגרי אויף, אָבער יענע זענען צוויי. אַזוי מיר וועט גיין מיט דעם סינטאַקס. אבער אַפֿילו אויב מיר האבן נישט גיין מיט וואָס סינטאַקס, וואָס איז - זאל זייַן פאַלש מיט דעם? [תּלמיד] איך טאָן ניט דאַרפֿן צו דערעפערענסע עס? >> יאָ. געדענקען אַז דער פייַל האט אַ ימפּליסאַט דערעפערענסע, און אַזוי ווען מיר רע נאָר דילינג מיט אַ סטרוקט, מיר ווילן צו נוצן. צו באַקומען אין אַ פעלד ין פון די סטרוקט. און דער נאָר צייַט מיר נוצן פייַל איז ווען מיר ווילן צו טאָן - געזונט, פייַל איז עקוויוואַלענט צו - אַז ס וואָס עס וואָלט האָבן מענט אויב איך געניצט פייַל. אַלע פייַל מיטל איז, דערעפערענסע דעם, איצט איך בין אין אַ סטרוקט, און איך קען באַקומען דעם פעלד. אָדער באַקומען די פעלד גלייַך אָדער דערעפערענסע און באַקומען די פעלד - איך טרעפן דעם זאָל זייַן ווערט. אבער דאָ איך בין דילינג מיט נאָר אַ סטרוקט, נישט אַ טייַטל צו אַ סטרוקט, און אַזוי איך קען נישט נוצן דעם פייַל. אבער דעם סאָרט פון זאַך מיר קענען טאָן פֿאַר אַלע נאָודז. אָה מיין גאָט. דאס איז 6, 7, און 3. דעמאָלט מיר קענען שטעלן אַרויף די צווייגן אין אונדזער בוים, מיר קענען האָבן 7 - מיר קענען האָבן, זייַן לינקס זאָל פונט צו 3. אַזוי ווי טאָן מיר טאָן וואָס? [סטודענטן, אַנינטעלאַדזשאַבאַל] >> יאָ. דער אַדרעס פון נאָדע3, און אויב איר האט ניט האָבן אַדרעס, דעמאָלט עס נאָר וואָלט נישט צונויפנעמען. אבער געדענקען אַז די ביסט פּוינטערז צו דער ווייַטער נאָודז. די רעכט זאָל פונט צו 9, און 3 זאָל פונט אויף די רעכט צו 6. איך טראַכטן דעם איז אַלע שטעלן. קיין באַמערקונגען אָדער שאלות? [תּלמיד, אַנינטעלאַדזשאַבאַל] דער וואָרצל איז געגאנגען צו זייַן 7. מיר קענען נאָר זאָגן נאָדע * פּטר = אָדער וואָרצל, = & נאָדע7. פֿאַר אונדזער צוועקן, מיר רע געגאנגען צו זייַן דילינג מיט אַרייַנלייגן, אַזוי מיר רע געגאנגען צו ווילן צו שרייַבן אַ פֿונקציע צו אַרייַנלייגן אין דעם ביינערי בוים און אַרייַנלייגן איז ינעוואַטאַבלי געגאנגען צו רופן מאַללאָק צו שאַפֿן אַ נייַ נאָדע פֿאַר דעם בוים. אַזוי זאכן זענען געגאנגען צו באַקומען מעסי מיט די פאַקט אַז עטלעכע נאָודז זענען דערווייַל אויף די אָנלייגן און אנדערע נאָודז זענען געגאנגען צו סוף אַרויף אויף די קופּע ווען מיר אַרייַנלייגן זיי. דאס איז בישליימעס גילטיק, אָבער דער בלויז סיבה מיר רע ביכולת צו טאָן דאָס אויף דעם אָנלייגן איז ווייַל עס ס אַזאַ אַ קאַנטרייווד בייַשפּיל וואָס מיר וויסן דער בוים איז געמיינט צו זייַן קאַנסטראַקטאַד ווי 7, 3, 6, 9. אויב מיר האבן נישט האָבן דעם, דעמאָלט מיר וואָלט ניט האָבן צו מאַללאָק אין דער ערשטער אָרט. ווי מיר וועט זען אַ ביסל שפּעטער, מיר זאָל זייַן מאַללאָק'ינג. רעכט איצט עס ס בישליימעס גלייַך צו שטעלן אויף די אָנלייגן, אָבער לאָזן ס טוישן דעם צו אַ מאַללאָק ימפּלאַמענטיישאַן. אַזוי יעדער פון די איז איצט געגאנגען צו זייַן עפּעס ווי נאָדע * נאָדע9 = מאַללאָק (סיזעאָף (נאָדע)). און איצט מיר רע געגאנגען צו האָבן צו טאָן אונדזער טשעק. אויב (נאָדע9 == נאַל) - איך האט ניט וועלן, אז - צוריקקומען 1, און דאַן מיר קענען טאָן נאָדע9-> ווייַל איצט עס ס אַ טייַטל, ווערט = 6, נאָדע9-> לינקס = נאַל, נאָדע9-> רעכט = נאַל, און מיר רע געגאנגען צו האָבן צו טאָן אַז פֿאַר יעדער פון יענע נאָודז. אַזוי אַנשטאָט, לאָזן ס שטעלן עס ין פון אַ באַזונדער פונקציאָנירן. זאל ס רופן עס נאָדע * בוילד_נאָדע, און דאָס איז עפּעס ענלעך צו די אַפּיס מיר צושטעלן פֿאַר הופפמאַן קאָודינג. מיר געבן איר יניטיאַליזער פאַנגקשאַנז פֿאַר אַ בוים און דעקאָנסטרוקטאָר "פאַנגקשאַנז" פֿאַר יענע ביימער און די זעלבע פֿאַר פאָראַס. אַזוי דאָ מיר רע געגאנגען צו האָבן אַ יניטיאַליזער פֿונקציע צו נאָר בויען אַ נאָדע פֿאַר אונדז. און עס ס געגאנגען צו קוקן שיין פיל פּונקט ווי דעם. און איך בין אַפֿילו געגאנגען צו זייַן פויל און נישט טוישן די נאָמען פון די בייַטעוודיק, אַפֿילו כאָטש נאָדע9 מאכט קיין זינען ענימאָר. אָה, איך טרעפן נאָדע9 ס ווערט זאָל ניט האָבן געווען 6. איצט מיר קענען צוריקקומען נאָדע9. און דאָ מיר זאָל צוריקקומען נאַל. אַלעמען שטימען אויף וואָס בויען-אַ-נאָדע פונקציאָנירן? אַזוי איצט מיר קענען נאָר רופן אַז צו בויען קיין נאָדע מיט אַ געגעבן ווערט און נאַל פּוינטערז. איצט מיר קענען רופן אַז, מיר קענען טאָן נאָדע * נאָדע9 = בוילד_נאָדע (9). און לאָזן ס טאָן. . . 6, 3, 7, 6, 3, 7. און איצט מיר וועלן צו שטעלן אַרויף די זעלבע פּוינטערז, חוץ איצט אַלץ ס 'שוין אין טערמינען פון פּוינטערז אַזוי ניט מער דאַרפֿן די אַדרעס פון. אָוקיי. אַזוי וואָס ס די לעצטע זאַך איך ווילן צו טאָן? עס ס 'אַ טעות-קאָנטראָלירונג אַז איך בין נישט טאן. וואָס טוט בויען נאָדע צוריקקומען? [תּלמיד, אַנינטעלאַדזשאַבאַל] >> יאָ. אויב מאַללאָק אַנדערש, עס וועט צוריקקומען נאַל. אַזוי איך בין געגאנגען צו לאַזאַלי לייגן עס אַראָפּ דאָ אַנשטאָט פון טאן אַ צושטאַנד פֿאַר יעדער. אויב (נאָדע9 == נאַל, אָדער - אַפֿילו סימפּלער, דאָס איז עקוויוואַלענט צו נאָר אויב נישט נאָדע9. אַזוי אויב נישט נאָדע9, אָדער נישט נאָדע6, אָדער נישט נאָדע3, אָדער נישט נאָדע7, צוריקקומען 1. אפֿשר מיר זאָל דרוקן מאַללאָק אַנדערש, אָדער עפּעס. [תּלמיד] איז פאַלש גלייַך צו נאַל ווי גוט? [באָוודען] אַני נול ווערט איז פאַלש. אַזוי נאַל איז אַ נול ווערט. נול איז אַ נול ווערט. פאַלש איז אַ נול ווערט. קיין - שיין פיל די בלויז 2 נול וואַלועס זענען נאַל און נול, פאַלש איז נאָר האַש דיפיינד ווי נול. אַז אויך אַפּלייז אויב מיר טאָן דערקלערן גלאבאלע בייַטעוודיק. אויב מיר האבן האָבן נאָדע * וואָרצל אַרויף דאָ, דעמאָלט - די פייַן זאַך וועגן גלאבאלע וועריאַבאַלז איז אַז זיי שטענדיק האָבן אַן ערשט ווערט. אַז ס 'נישט אמת פון פאַנגקשאַנז, ווי ין פון דאָ, אויב מיר האָבן, ווי, נאָדע * אָדער נאָדע X. מיר האָבן קיין געדאַנק וואָס קס.וואַלוע, קס.ווהאַטעווער, אָדער מיר קען דרוקן זיי און זיי קען זייַן אַרביטראַריש. אַז ס 'נישט אמת פון גלאבאלע וועריאַבאַלז. אַזוי נאָדע וואָרצל אָדער נאָדע X. דורך פעליקייַט, אַלץ וואָס ס גלאבאלע, אויב ניט בפירוש ינישאַלייזד צו עטלעכע ווערט, האט אַ נול ווערט ווי זייַן ווערט. אַזוי דאָ, נאָדע * וואָרצל, מיר טאָן ניט בפירוש ינישאַלייז עס צו עפּעס, אַזוי זייַן פעליקייַט ווערט וועט זייַן נאַל, וואָס איז די נול ווערט פון פּוינטערז. די פעליקייַט ווערט פון X איז געגאנגען צו מיינען אַז קס.וואַלוע איז נול, קס.לעפט איז נאַל, און קס.ריגהט איז נאַל. אַזוי זינט עס איז אַ סטרוקט, אַלע פון ​​די פעלדער פון די סטרוקט וועט זייַן נול וואַלועס. מיר טאָן ניט דאַרפֿן צו נוצן אַז דאָ, כאָטש. [תּלמיד] די סטרוקץ זענען אַנדערש ווי אנדערע וועריאַבאַלז, און די אנדערע וועריאַבאַלז זענען מיסט וואַלועס; די ביסט זעראָס? [באָוודען] אנדערע וואַלועס אויך. אַזוי אין X, X וועט זייַן נול. אויב עס ס אין גלאבאלע פאַרנעם, עס האט אַן ערשט ווערט. >> אָוקיי. [באָוודען] אָדער די ערשט ווערט איר געגעבן עס אָדער נול. איך טראַכטן וואָס נעמט קעיר פון אַלע פון ​​דעם. אָוקיי. אַזוי דער ווייַטער טייל פון די קשיא פרעגט, "איצט מיר ווילן צו שרייַבן אַ פֿונקציע גערופן כּולל מיט אַ פּראָוטאַטייפּ פון באָאָל כּולל ינט ווערט ". מיר זענען נישט געגאנגען צו טאָן באָאָל כּולל ינט ווערט. אונדזער פּראָוטאַטייפּ איז געגאנגען צו קוקן ווי באָאָל כּולל (ינט ווערט. און דעמאָלט מיר רע אויך געגאנגען צו פאָרן עס דער בוים אַז עס זאָל זייַן קאָנטראָלירונג צו זען אויב עס האט וואָס ווערט. אַזוי נאָדע * בוים). אָוקיי. און דעמאָלט מיר קענען רופן עס מיט עפּעס ווי, אפֿשר מיר וועט ווילן צו פּרינטף אָדער עפּעס. כּולל 6, אונדזער וואָרצל. וואָס זאָל צוריקקומען איינער, אָדער אמת, וועראַז כּולל 5 וואָרצל זאָל צוריקקומען פאַלש. אַזוי נעמען אַ רגע צו מאַכשער דעם. איר קענען טאָן עס אָדער יטעראַטיוועלי אָדער רעקורסיוועלי. די פייַן זאַך וועגן דער וועג מיר ווע שטעלן זאכן אַרויף איז אַז עס לענדז זיך צו אונדזער רעקורסיווע לייזונג פיל גרינגער ווי די גלאבאלע-בייַטעוודיק וועג האט. ווייַל אויב מיר נאָר האָבן כּולל ינט ווערט, דעריבער מיר האָבן קיין וועג פון רעקורסינג אַראָפּ סובטרעעס. מיר וואָלט האָבן צו האָבן אַ באַזונדער העלפּער פונקציאָנירן אַז רעקורסעס אַראָפּ די סובטרעעס פֿאַר אונדז. אבער זינט מיר ווע פארענדערט עס צו נעמען די בוים ווי אַן אַרגומענט, וואָס עס זאָל האָבן שטענדיק געווען אין דער ערשטער אָרט, איצט מיר קענען רעקורסע מער לייכט. אַזוי יטערייטיוו אָדער רעקורסיווע, מיר וועט גיין איבער ביידע, אָבער מיר וועט זען אַז רעקורסיווע ענדס אַרויף זייַענדיק גאַנץ גרינג. אָוקיי. טוט ווער עס יז האָבן עפּעס מיר קענען אַרבעטן מיט? [תּלמיד] איך ווע גאַט אַ יטערייטיוו לייזונג. >> אַלע רעכט, יטערייטיוו. אָוקיי, דאָס קוקט גוט. אַזוי, וועלן צו גיין אונדז דורך אים? [תּלמיד] זיכער. אַזוי איך שטעלן אַ טעמפּ בייַטעוודיק צו באַקומען די ערשטער נאָדע פון ​​די בוים. און דעמאָלט איך נאָר לופּט דורך בשעת טעמפּ טוט ניט גלייַך נאַל, אַזוי בשעת איז געווען נאָך אין דער בוים, איך טרעפן. און אויב די ווערט איז גלייַך צו דעם ווערט אַז טעמפּ איז פּוינטינג צו, דעמאָלט עס קערט וואָס ווערט. אַנדערש, עס טשעקס אויב עס ס אויף די רעכט זייַט אָדער די לינקס זייַט. אויב איר אלץ באַקומען אַ סיטואַציע ווו עס ס ניט מער בוים, דעמאָלט עס קערט - עס עקסאַץ די שלייף און קערט פאַלש. [באָוודען] אָוקיי. אַזוי וואָס מיינט גוט. ווער עס יז האָבן קיין באַמערקונגען אויף עפּעס? איך האב קיין קערעקטנאַס באַמערקונגען אין אַלע. די איין זאַך מיר קענען טאָן איז דאָס באָכער. אָה, עס ס געגאנגען צו גיין אַ ביסל לאָנגיש. איך וועט פאַרריכטן וואָס אַרויף. אָוקיי. אַלעמען זאָל געדענקען ווי טערנאַרי אַרבעט. עס האָבן באשטימט געווארן קוויזיז אין דער פאַרגאַנגענהייַט וואָס געבן איר אַ פֿונקציע מיט אַ טערנאַרי אָפּעראַטאָר, און זאָגן, איבערזעצן דעם, טאָן עפּעס וואָס טוט ניט נוצן טערנאַרי. אַזוי דאָס איז אַ זייער פּראָסט פאַל פון ווען איך וואָלט טראַכטן צו נוצן טערנאַרי, ווו אויב עטלעכע צושטאַנד שטעלן אַ בייַטעוודיק צו עפּעס, אַנדערש שטעלן אַז זעלביקער בייַטעוודיק צו עפּעס אַנדערש. אַז ס 'עפּעס אַז זייער אָפט קענען זייַן פארוואנדלען אין דעם סאָרט פון זאַך ווו שטעלן אַז בייַטעוודיק צו דעם - אָדער, געזונט, איז דאָס אמת? דעמאָלט דעם, אַנדערש דעם. [תּלמיד] דער ערשטער איינער איז אויב אמת, רעכט? [באָוודען] יאָ. די וועג איך שטענדיק לייענען עס איז, טעמפּ יקוואַלז ווערט גרעסער ווי טעמפּ ווערט, דעמאָלט דעם, אַנדערש דעם. עס ס אַסקינג אַ קשיא. איז עס גרעסער? דעמאָלט טאָן דער ערשטער זאַך. אַנדערש טאָן די רגע זאַך. איך כּמעט שטענדיק - די צווייפּינטל, איך נאָר - אין מיין קאָפּ, איך לייענען ווי אַנדערש. טוט ווער עס יז האָבן אַ רעקורסיווע לייזונג? אָוקיי. דאס איינער מיר רע געגאנגען צו - עס קען שוין זייַן גרויס, אָבער מיר רע געגאנגען צו מאַכן עס אַפֿילו בעסער. דאס איז שיין פיל דער זעלביקער פּינטלעך געדאַנק. עס ס נאָר, געזונט, טאָן איר ווילן צו דערקלערן? [תּלמיד] זיכער. אַזוי מיר רע מאכן זיכער אַז דער בוים איז נישט נאַל ערשטער, ווייַל אויב דער בוים איז נאַל דעמאָלט עס ס געגאנגען צו צוריקקומען פאַלש ווייַל מיר האָבן נישט געפונען עס. און אויב דאָרט ס נאָך אַ בוים, מיר גיין אין - מיר ערשטער טשעק אויב די ווערט איז די קראַנט נאָדע. צוריקקומען אמת אויב עס איז, און אויב נישט מיר רעקורסע אויף די לינקס אָדער רעכט. טוט וואָס געזונט צונעמען? >> מם-המם. (פערטראג) אַזוי באַמערקן אַז דאָס איז כּמעט - סטראַקטשעראַלי זייער ענלעך צו די יטערייטיוו לייזונג. עס ס נאָר אַז אַנשטאָט פון רעקורסינג, מיר האבן אַ בשעת שלייף. און די באַזע פאַל דאָ ווו בוים טוט ניט גלייַך נאַל איז די צושטאַנד אונטער וואָס מיר צעבראכן אויס פון די בשעת שלייף. זיי ניטאָ זייער ענלעך. אבער מיר רע געגאנגען צו נעמען דעם איין שריט ווייַטער. איצט, מיר טאָן די זעלבע זאַך דאָ. נאָטיץ מיר רע אומגעקערט די זעלבע זאַך אין ביידע פון ​​די שורות, חוץ פֿאַר איין אַרגומענט איז אַנדערש. אַזוי מיר רע געגאנגען צו מאַכן אַז אין אַ טערנאַרי. איך שלאָגן אָפּציע עפּעס, און עס געמאכט אַ סימבאָל. אָוקיי. אַזוי מיר רע געגאנגען צו צוריקקומען כּולל וואָס. דאס איז געטינג צו זייַן קייפל שורות, גוט, זומד אין עס איז. יוזשאַוואַלי, ווי אַ סטיליסטיק זאַך, איך טאָן ניט טראַכטן פילע מענטשן שטעלן אַ פּלאַץ נאָך די פייַל, אָבער איך טרעפן אויב איר ניטאָ קאָנסיסטענט, עס ס פייַן. אויב ווערט איז ווייניקער ווי בוים ווערט, מיר ווילן צו רעקורסע אויף בוים לינקס, אַנדערש מיר ווילן צו רעקורסע אויף בוים רעכט. אַזוי וואָס איז געווען שריט איינער פון מאכן דעם קוקן קלענערער. שריט צוויי פון מאכן דעם קוקן קלענערער - מיר קענען באַזונדער דעם צו קייפל שורות. אָוקיי. שריט צוויי פון מאכן עס קוקן קלענערער איז דאָ, אַזוי צוריקקומען ווערט יקוואַלז בוים ווערט, אָדער כּולל וועלכער. דאס איז אַ וויכטיק זאַך. איך בין נישט זיכער אויב ער האט עס בפירוש אין קלאַס, אָבער עס ס גערופן קורץ-קרייַז אפשאצונג. דער געדאַנק דאָ איז ווערט == בוים ווערט. אויב אַז איז אמת, דאַן דאָס איז אמת, און מיר ווילן צו 'אָדער' אַז מיט וועלכער איז איבער דאָ. אַזוי אָן אַפֿילו טראכטן וועגן וועלכער איז איבער דאָ, וואָס איז די גאנצע אויסדרוק געגאנגען צו צוריקקומען? [תּלמיד] אמת? >> יאָ, ווייַל אמת פון עפּעס, אָר'ד - אָדער אמת אָר'ד מיט עפּעס איז דאַווקע אמת. אַזוי ווי באַלד ווי מיר זען צוריקקומען ווערט = בוים ווערט, מיר רע נאָר געגאנגען צו צוריקקומען אמת. ניט אַפֿילו געגאנגען צו רעקורסע ווייַטער כּולל אַראָפּ די שורה. מיר קענען נעמען דעם איין שריט ווייַטער. צוריקקומען בוים טוט ניט גלייַך נאַל און אַלע פון ​​דעם. עס געמאכט עס אַ איין-שורה פונקציאָנירן. דאס איז אויך אַ בייַשפּיל פון קורץ-קרייַז אפשאצונג. אבער איצט עס ס די זעלבע געדאַנק - אַנשטאָט פון - אַזוי אויב בוים טוט ניט גלייַך נאַל - אָדער, געזונט, אויב בוים טוט גלייַך נאַל, וואָס איז די שלעכט פאַל, אויב בוים יקוואַלז נאַל, דעריבער דער ערשטער צושטאַנד איז געגאנגען צו זייַן פאַלש. אַזוי פאַלש אַנדעד מיט עפּעס איז געגאנגען צו זייַן וואָס? [תּלמיד] פאָלס. >> יאָ. דאס איז די אנדערע העלפט פון קורץ-קרייַז אפשאצונג, ווו אויב בוים טוט ניט גלייַך נאַל, דעמאָלט מיר זענען נישט געגאנגען צו אַפֿילו גיין - אָדער אויב בוים טוט גלייַך נאַל, דעמאָלט מיר זענען נישט געגאנגען צו טאָן ווערט == בוים ווערט. מיר רע נאָר געגאנגען צו מיד צוריקקומען פאַלש. וואָס איז וויכטיק, זינט אויב עס האט נישט קורץ-קרייַז אָפּשאַצן, דעריבער אויב בוים טוט גלייַך נאַל, דעם רגע צושטאַנד איז געגאנגען צו סעג שולד, ווייַל בוים-> ווערט איז דערעפערענסינג נאַל. אַזוי אַז ס וואָס. קענען מאַכן דעם - שיפט אַמאָל איבער. דאס איז אַ זייער פּראָסט זאַך אויך, נישט מאכן דעם איין שורה מיט דעם, אָבער עס ס 'אַ פּראָסט זאַך אין באדינגונגען, אפֿשר נישט רעכט דאָ, אָבער אויב (בוים! = נאַל, און בוים-> ווערט == ווערט), טאָן וועלכער. דאס איז אַ זייער פּראָסט צושטאַנד, ווו אַנשטאָט פון בעת צו ברעכן דעם אין צוויי יפס, ווו ווי, איז דער בוים נאַל? אָוקיי, עס ס נישט נאַל, אַזוי איצט איז דער בוים ווערט גלייַך צו ווערט? צי דעם. אַנשטאָט, דעם צושטאַנד, דאָס וועט קיינמאָל סעג שולד ווייַל עס וועט ברעכן אויס אויב דאָס כאַפּאַנז צו זייַן נאַל. נו, איך טרעפן אויב אייער בוים איז אַ גאָר פאַרקריפּלט טייַטל, עס קענען נאָך סעג שולד, אָבער עס קענען נישט סעג שולד אויב בוים איז נאַל. אויב עס זענען נאַל, עס וואָלט ברעכן אויס איידער איר אלץ דערעפערענסעד די טייַטל אין דער ערשטער אָרט. [תּלמיד] איז דאָס גערופן פויל אפשאצונג? [באָוודען] לאַזי אפשאצונג איז אַ באַזונדער זאַך. פויל אפשאצונג איז מער ווי איר פרעגן פֿאַר אַ ווערט, איר פרעגן צו רעכענען אַ ווערט, מין פון, אָבער איר טאָן ניט דאַרפֿן עס מיד. אַזוי ביז איר פאקטיש דאַרפֿן עס, עס איז נישט עוואַלואַטעד. דאס איז נישט פּונקט די זעלבע זאַך, אָבער אין די הופפמאַן פּסעט, עס זאגט אַז מיר "לאַזאַלי" שרייַבן. די סיבה מיר טאָן וואָס איז ווייַל מיר רע פאקטיש באַפערינג דער שרייַבן - מיר טאָן נישט וועלן צו שרייַבן יחיד ביטן אין אַ צייַט, אָדער יחיד ביטעס אין אַ צייַט, מיר אַנשטאָט ווילן צו באַקומען אַ פּייַדע פון ​​ביטעס. דעמאָלט אַמאָל מיר האָבן אַ פּייַדע פון ​​ביטעס, דעמאָלט מיר וועט שרייַבן עס אויס. אפילו כאָטש איר פרעגן עס צו שרייַבן - און פווריטע און פרעד טאָן די זעלבע סאָרט פון זאַך. זיי באַפער דיין לייענט און שרייבט. אפילו כאָטש איר פרעגן עס צו שרייַבן מיד, עס מיסטאָמע וועט ניט. און איר קענען ניט זייַן זיכער אַז דאס זענען געגאנגען צו זייַן געשריבן ביז איר רופן הפקלאָסע אָדער וועלכער עס איז, וואָס דעמאָלט זאגט, אָוקיי, איך בין קלאָוזינג מיין טעקע, אַז מיטל איך 'ד בעסער שרייַבן אַלץ איך האב נישט געשריבן נאָך. עס האט ניט דאַרפֿן צו שרייַבן אַלץ אויס ביז איר זענט קלאָוזינג דער טעקע, און דאַן עס דאַרף צו. אַזוי אַז ס נאָר וואָס פויל - עס ווייץ ביז עס האט צו פּאַסירן. דאס - נעמען 51 און איר וועט גיין אין עס אין מער דעטאַל, ווייַל אָקאַמל און אַלץ אין 51, אַלץ איז רעקורסיאָן. עס זענען קיין יטערייטיוו סאַלושאַנז, בייסיקלי. אַלץ איז רעקורסיאָן, און פויל אפשאצונג איז געגאנגען צו זייַן וויכטיק פֿאַר אַ פּלאַץ פון צושטאנדן ווו, אויב איר האט ניט לאַזאַלי אָפּשאַצן, וואָס וואָלט מיינען - די משל איז סטרימז, וואָס זענען ינפאַנאַטלי לאַנג. אין טעאָריע, איר קענען טראַכטן פון די נאַטירלעך נומערן ווי אַ טייַך פון 1-2-3-4-5-6-7, אַזוי לאַזאַלי עוואַלואַטעד זאכן זענען פייַן. אויב איך זאָגן איך ווילן די צענט נומער, דעמאָלט איך קענען אָפּשאַצן אַרויף צו די צענט נומער. אויב איך ווילן די כאַנדראַדט נומער, דעמאָלט איך קענען אָפּשאַצן אַרויף צו די כאַנדראַדט נומער. אָן פויל אפשאצונג, דעמאָלט עס ס געגאנגען צו פּרובירן צו אָפּשאַצן אַלע נומערן מיד. איר רע יוואַליוייטינג ינפאַנאַטלי פילע נומערן, און אַז ס נאָר ניט מעגלעך. אַזוי דאָרט זענען אַ פּלאַץ פון צושטאנדן ווו פויל אפשאצונג איז נאָר יקערדיק צו געטינג זאכן צו אַרבעטן. איצט מיר ווילן צו שרייַבן אַרייַנלייגן ווו אַרייַנלייגן איז געגאנגען צו זייַן סימילאַרלי טשאַנגינג אין זייַן דעפֿיניציע. אַזוי רעכט איצט עס ס באָאָל אַרייַנלייגן (ינט ווערט). מיר רע געגאנגען צו טוישן וואָס צו באָאָל אַרייַנלייגן (ינט ווערט, נאָדע * בוים). מיר רע פאקטיש געגאנגען צו טוישן אַז ווידער אין אַ ביסל, מיר וועט זען וואָס. און לאָזן ס מאַך בוילד_נאָדע, נאָר פֿאַר די כעק פון עס, אויבן אַרייַנלייגן אַזוי מיר טאָן ניט האָבן צו שרייַבן אַ פֿונקציע פּראָוטאַטייפּ. וואָס איז אַ אָנצוהערעניש אַז איר ניטאָ געגאנגען צו זייַן ניצן בוילד_נאָדע אין אַרייַנלייגן. אָוקיי. נעמען אַ מינוט פֿאַר וואָס. איך טראַכטן איך געהאלפן די רעוויזיע אויב איר ווילן צו ציען פון וואָס, אָדער, אין מינדסטער, איך האט איצט. איך געוואלט אַ קליין ברעכן צו טראַכטן וועגן דער לאָגיק פון אַרייַנלייגן, אויב איר קענען נישט טראַכטן פון עס. בייסיקלי, איר וועט נאָר אלץ זייַן ינסערטינג בייַ בלעטער. ווי, אויב איך אַרייַנלייגן 1, דאַן איך בין ינעוואַטאַבלי געגאנגען צו זייַן ינסערטינג 1 - איך וועט טוישן צו שוואַרץ - ייל זייַן ינסערטינג 1 איבער דאָ. אָדער אויב איך אַרייַנלייגן 4, איך ווילן צו זייַן ינסערטינג 4 איבער דאָ. אַזוי קיין ענין וואָס איר טאָן, איר ניטאָ געגאנגען צו זייַן ינסערטינג בייַ אַ בלאַט. כל איר האָבן צו טאָן איז יטעראַטע אַראָפּ דעם בוים ביז איר באַקומען צו דעם נאָדע וואָס זאָל זייַן די נאָדע ס פאָטער, דער נייַ נאָדע ס פאָטער, און דעמאָלט טוישן זייַן לינקס אָדער רעכט טייַטל, דיפּענדינג אויף צי עס ס גרעסער ווי אָדער ווייניקער ווי די קראַנט נאָדע. טוישן וואָס טייַטל צו פונט צו דיין נייַ נאָדע. אַזוי יטעראַטע אַראָפּ די בוים, מאַכן דעם בלאַט פונט צו די נייַ נאָדע. אויך טראַכטן וועגן וואָס אַז פערבידז דער טיפּ פון סיטואַציע פריער, ווו איך קאַנסטראַקטאַד די ביינערי בוים ווו עס איז געווען ריכטיק אויב איר נאָר געקוקט אין אַ איין נאָדע, אָבער 9 איז געווען צו די לינקס פון 7 אויב איר יטעראַטעד אַראָפּ אַלע די וועג. אַזוי אַז ס אוממעגלעך אין דעם סצענאַר, זינט - טראַכטן וועגן ינסערטינג 9 אָדער עפּעס; בייַ די זייער ערשטער נאָדע, איך בין געגאנגען צו זען 7 און איך בין נאָר געגאנגען צו גיין צו די רעכט. אַזוי קיין ענין וואָס איך טאָן, אויב איך בין ינסערטינג דורך געגאנגען צו אַ בלאַט, און צו אַ בלאַט ניצן די צונעמען אַלגערידאַם, עס ס געגאנגען צו זייַן אוממעגלעך פֿאַר מיר צו אַרייַנלייגן 9 צו די לינקס פון 7 ווייַל ווי באַלד ווי איך שלאָגן 7 איך בין געגאנגען צו גיין צו די רעכט. טוט ווער עס יז האָבן עפּעס צו אָנהייבן מיט? [תּלמיד] איך טאָן. >> זיכער. [תּלמיד, אַנינטעלאַדזשאַבאַל] [אנדערע תּלמיד, אַנינטעלאַדזשאַבאַל] [באָוודען] עס ס אַפּרישיייטיד. אָוקיי. ווילן צו דערקלערן? [תּלמיד] זינט מיר וויסן אַז מיר זענען ינסערטינג נייַ נאָודז אין די סוף פון די בוים, איך לופּט דורך דעם בוים יטעראַטיוועלי ביז איך גאַט צו אַ נאָדע אַז שפּיציק צו נאַל. און דעמאָלט איך באַשלאָסן צו לייגן עס אָדער אויף די רעכט זייַט אָדער די לינקס זייַט ניצן דעם רעכט בייַטעוודיק; עס דערציילט מיר ווו צו שטעלן עס. און דעמאָלט, יסענשאַלי, איך נאָר געמאכט אַז לעצט - אַז טעמפּ נאָדע פונט צו די נייַ נאָדע אַז עס איז געווען שאפן, אָדער אויף די לינקס זייַט אָדער אויף די רעכט זייַט, דיפּענדינג אויף וואָס די ווערט רעכט איז געווען. צום סוף, איך שטעלן די נייַ נאָדע ווערט צו די ווערט פון זייַן טעסטינג. [באָוודען] אָוקיי, אַזוי איך זען איינער אַרויסגעבן דאָ. דאס איז ווי 95% פון די וועג דאָרט. דער איינער אַרויסגעבן אַז איך זען, נו, טוט ווער עס יז אַנדערש זען אַן אַרויסגעבן? וואָס איז די ומשטאַנד אונטער וואָס זיי ברעכן אויס פון די שלייף? [תּלמיד] אויב טעמפּ איז נאַל? >> יאָ. אַזוי ווי איר ברעכן אויס פון די שלייף איז אויב טעמפּ איז נאַל. אבער וואָס טוט איך טאָן רעכט דאָ? איך דערעפערענסע טעמפּ, וואָס איז ינעוואַטאַבלי נאַל. אַזוי די אנדערע זאַך איר דאַרפֿן צו טאָן איז ניט נאָר האַלטן שפּור ביז טעמפּ איז נאַל, איר ווילן צו האַלטן שפּור פון דעם פאָטער אין אַלע מאל. מיר אויך ווילן נאָדע * פאָטער, איך טרעפן מיר קענען האַלטן אַז בייַ נאַל בייַ ערשטער. דאס איז געגאנגען צו האָבן טשודנע אָפּפירונג פֿאַר דעם וואָרצל פון דעם בוים, אָבער מיר וועט באַקומען צו וואָס. אויב ווערט איז גרעסער ווי וועלכער, דעמאָלט טעמפּ = טעמפּ רעכט. אבער איידער מיר טאָן אַז, פאָטער = טעמפּ. אָדער זענען עלטערן שטענדיק געגאנגען צו גלייַך טעמפּ? איז אַז דער פאַל? אויב טעמפּ איז נישט נאַל, דאַן איך בין געגאנגען צו באַוועגן אַראָפּ, קיין ענין וואָס, צו אַ נאָדע פֿאַר וואָס טעמפּ איז דער פאָטער. אַזוי פאָטער 'ס געגאנגען צו זייַן טעמפּ, און דעמאָלט איך מאַך טעמפּ אַראָפּ. איצט טעמפּ איז נאַל, אָבער פאָטער פונקטן צו דער פאָטער פון דער זאַך וואָס איז נאַל. אַזוי אַראָפּ דאָ, איך טאָן נישט וועלן צו שטעלן רעכט יקוואַלז 1. אַזוי איך אריבערגעפארן צו די רעכט, אַזוי אויב רעכט = 1, און איך טרעפן איר אויך ווילן צו טאָן - אויב איר מאַך צו די לינקס, איר ווילן צו שטעלן רעכט גלייַך צו 0. אָדער אַנדערש אויב איר אלץ מאַך צו די רעכט. אַזוי רעכט = 0. אויב רעכט = 1, איצט מיר וועלן צו מאַכן די פאָטער רעכט טייַטל נעוונאָדע, אַנדערש מיר וועלן צו מאַכן די פאָטער לינקס טייַטל נעוונאָדע. שאלות אויף וואָס? אָוקיי. אַזוי דאָס איז די וועג מיר - געזונט, פאקטיש, אַנשטאָט פון טאן דעם, מיר האַלב דערוואַרט איר צו נוצן בוילד_נאָדע. און דעריבער אויב נעוונאָדע יקוואַלז נאַל, צוריקקומען פאַלש. אַז ס וואָס. איצט, דאָס איז וואָס מיר דערוואַרט איר צו טאָן. דאס איז וואָס דער שטעקן סאַלושאַנז טאָן. איך דיסאַגרי מיט דעם ווי די "רעכט" וועג פון געגאנגען וועגן אים אָבער דאָס איז בישליימעס פייַן און עס וועט אַרבעטן. איין זאַך אַז ס אַ ביסל טשודנע רעכט איצט איז אויב דער בוים סטאַרץ אַוועק ווי נאַל, מיר פאָרן אין אַ נאַל בוים. איך טרעפן עס דעפּענדס אויף ווי איר דעפינירן די נאַטור פון גייט פארביי אין אַ נאַל בוים. איך וואָלט טראַכטן אַז אויב איר פאָרן אין אַ נאַל בוים, דעמאָלט ינסערטינג די ווערט אין אַ נאַל בוים זאָל נאָר צוריקקומען אַ בוים ווו די בלויז ווערט איז אַז איין נאָדע. צי מען שטימען מיט וואָס? איר קען, אויב איר געוואלט, אויב איר פאָרן אין אַ נאַל בוים און איר ווילן צו אַרייַנלייגן אַ ווערט אין עס, צוריקקומען פאַלש. עס ס אַרויף צו איר צו דעפינירן וואָס. צו טאָן דער ערשטער זאַך איך געזאגט און דעמאָלט - געזונט, איר ניטאָ געגאנגען צו האָבן צרה טאן אַז, ווייַל עס וואָלט זייַן גרינגער אויב מיר האבן אַ גלאבאלע טייַטל צו די זאַך, אָבער מיר טאָן ניט, אַזוי אויב בוים איז נאַל, דאָרט ס 'גאָרנישט מיר קענען טאָן וועגן וואָס. מיר קענען נאָר צוריקקומען פאַלש. אַזוי איך בין געגאנגען צו טוישן אַרייַנלייגן. מיר טעקניקלי קען נאָר טוישן דעם רעכט דאָ, ווי עס ס יטעראַטינג איבער זאכן, אָבער איך בין געגאנגען צו טוישן אַרייַנלייגן צו נעמען אַ נאָדע ** בוים. טאָפּל פּוינטערז. וואָס טוט דאָס מיינען? אַנשטאָט פון דילינג מיט פּוינטערז צו נאָודז, די זאַך איך בין געגאנגען צו זייַן מאַניפּיאַלייטינג איז דעם טייַטל. איך בין געגאנגען צו זייַן מאַניפּיאַלייטינג דעם טייַטל. איך בין געגאנגען צו זייַן מאַניפּיאַלייטינג פּוינטערז גלייַך. דאס מאכט זינען זינט, טראַכטן וועגן אַראָפּ - געזונט, רעכט איצט דעם ווייזט צו נאַל. וואָס איך ווילן צו טאָן איז מאַניפּולירן דעם טייַטל צו פונט צו נישט נאַל. איך ווילן עס צו פונט צו מיין נייַ נאָדע. אויב איך נאָר האַלטן שפּור פון פּוינטערז צו מיין פּוינטערז, דעמאָלט איך טאָן ניט דאַרפֿן צו האַלטן שפּור פון אַ פאָטער טייַטל. איך קען נאָר האַלטן שפּור צו זען אויב די טייַטל איז פּוינטינג צו נאַל, און אויב די טייַטל איז פּוינטינג צו נאַל, טוישן עס צו פונט צו די נאָדע איך ווילן. און איך קענען טוישן עס זינט איך האָבן אַ טייַטל צו די טייַטל. זאל ס זען דאָס רעכט איצט. איר קענען פאקטיש טאָן עס רעקורסיוועלי שיין לייכט. צי מיר ווילן צו טאָן וואָס? יא, מיר טאָן. זאל ס זען עס רעקורסיוועלי. ערשטער, וואָס איז אונדזער באַזע פאַל געגאנגען צו זייַן? כּמעט שטענדיק אונדזער באַזע פאַל; אָבער פאקטיש, דאָס איז מין פון טריקי. ערשטער דאס ערשטער, אויב (בוים == נאַל) איך טרעפן מיר רע נאָר געגאנגען צו צוריקקומען פאַלש. דאס איז אַנדערש פון אייער בוים זייַענדיק נאַל. דאס איז די טייַטל צו דיין וואָרצל טייַטל זייַענדיק נאַל וואָס מיטל אַז אייער וואָרצל טייַטל טוט נישט עקזיסטירן. אַזוי אַראָפּ דאָ, אויב איך טאָן נאָדע * - לאָזן ס נאָר רייוס דעם. נאָדע * וואָרצל = נאַל, און דעמאָלט איך בין געגאנגען צו רופן אַרייַנלייגן דורך טאן עפּעס ווי, אַרייַנלייגן 4 אין & וואָרצל. אַזוי & וואָרצל, אויב וואָרצל איז אַ נאָדע * דעמאָלט & וואָרצל איז געגאנגען צו זייַן אַ נאָדע **. דאס איז גילטיק. אין דעם פאַל, בוים, אַרויף דאָ, בוים איז נישט נאַל - אָדער אַרייַנלייגן. דאָ. בוים איז נישט נאַל; * בוים איז נאַל, וואָס איז פייַן ווייַל אויב * בוים איז נאַל, דעמאָלט איך קענען מאַניפּולירן עס צו איצט פונט צו וואָס איך ווילן עס צו פונט צו. אבער אויב בוים איז נאַל, אַז מיטל איך נאָר געקומען אַראָפּ דאָ און האט נאַל. וואָס טוט ניט מאַכן זינען. איך קען נישט טאָן עפּעס מיט וואָס. אויב בוים איז נאַל, צוריקקומען פאַלש. אַזוי איך בייסיקלי שוין געזאגט וואָס אונדזער פאַקטיש באַזע פאַל איז. און וואָס איז אַז געגאנגען צו זייַן? [תּלמיד, אַנינטעלאַדזשאַבאַל] [באָוודען] יא. אַזוי אויב (* בוים == נאַל). דאס דערציילט צו די פאַל איבער דאָ ווו אויב מיין רויט טייַטל איז די טייַטל איך בין פאָוקיסט אויף, אַזוי ווי איך בין פאָוקיסט אויף דעם טייַטל, איצט איך בין פאָוקיסט אויף דעם טייַטל. איצט איך בין פאָוקיסט אויף דעם טייַטל. אַזוי אויב מיין רויט טייַטל, וואָס איז מיין נאָדע **, איז אלץ - אויב *, מיין רויט טייַטל, איז אלץ נאַל, אַז מיטל אַז איך בין בייַ דער פאַל וואו איך בין פאָוקיסינג אויף אַ טייַטל וואָס ווייזט - דאָס איז אַ טייַטל וואָס געהערט צו אַ בלאַט. איך ווילן צו טוישן דעם טייַטל צו פונט צו מיין נייַ נאָדע. קומען צוריק איבער דאָ. מייַן נעוונאָדע וועט נאָר זייַן נאָדע * N = בוילד_נאָדע (ווערט) דעמאָלט ען, אויב N = נאַל, צוריקקומען פאַלש. אַנדערש מיר ווילן צו טוישן וואָס די טייַטל איז דערווייַל פּוינטינג צו צו איצט פונט צו אונדזער ניי געבויט נאָדע. מיר קענען פאקטיש טאָן אַז דאָ. אַנשטאָט פון געזאגט N, מיר זאָגן * בוים = אויב * בוים. אַלעמען פֿאַרשטיין וואָס? אַז דורך דילינג מיט פּוינטערז צו פּוינטערז, מיר קענען טוישן נאַל פּוינטערז צו פונט צו דאס מיר ווילן זיי צו פונט צו. אַז ס אונדזער באַזע פאַל. איצט אונדזער ריקעראַנס, אָדער אונדזער רעקורסיאָן, איז געגאנגען צו זייַן זייער ענלעך צו אַלע אנדערע רעקורסיאָנס מיר ווע שוין טאן. מיר רע געגאנגען צו ווילן צו אַרייַנלייגן ווערט, און איצט איך בין געגאנגען צו נוצן טערנאַרי ווידער, אָבער וואָס איז אונדזער צושטאַנד געגאנגען צו זייַן? וואָס איז עס מיר רע קוקן פֿאַר צו באַשליסן צי מיר ווילן צו גיין לינקס אָדער רעכט? זאל ס טאָן עס אין באַזונדער טריט. אויב (ווערט <) וואָס? [תּלמיד] דער בוים ס ווערט? [באָוודען] אזוי געדענקען אַז איך בין דערווייַל - [סטודענטן, אַנינטעלאַדזשאַבאַל] [באָוודען] יאָ, אַזוי רעכט דאָ, לאָזן 'ס זאָגן אַז דעם גרין פייַל איז אַ בייַשפּיל פון וואָס בוים דערווייַל איז, איז אַ טייַטל צו דעם טייַטל. אַזוי אַז מיטל איך בין אַ טייַטל צו אַ טייַטל צו 3. די דערעפערענסע צוויי מאָל געבלאזן גוט. וואָס טאָן איך - ווי טאָן איך טאָן אַז? [תּלמיד] דערעפערענסע אַמאָל, און דעמאָלט טאָן פייַל אַז וועג? [באָוודען] אזוי (* בוים) איז די דערעפערענסע אַמאָל, -> ווערט איז געגאנגען צו געבן מיר די ווערט פון די נאָדע אַז איך בין מינאַצאַד פּוינטינג צו. אַזוי איך קענען אויך שרייַבן עס ** טרעע.וואַלוע אויב איר בעסער אַז. אָדער מעשים. אויב וואָס איז דער פאַל, דעמאָלט איך ווילן צו רופן אַרייַנלייגן מיט ווערט. און וואָס איז מיין דערהייַנטיקט נאָדע ** געגאנגען צו זייַן? איך ווילן צו גיין צו די לינקס, אַזוי ** טרעע.לעפט איז געגאנגען צו זייַן מיין לינקס. און איך וועלן די טייַטל צו אַז זאַך אַזוי אַז אויב די לינקס ענדס אַרויף זייַענדיק דער נאַל טייַטל, איך קענען מאָדיפיצירן עס צו פונט צו מיין נייַ נאָדע. און די אנדערע פאַל קענען זייַן זייער ענלעך. זאל ס 'פאקטיש מאַכן אַז מיין טערנאַרי רעכט איצט. אַרייַנלייגן ווערט אויב ווערט <(** בוים). ווערט. דעמאָלט מיר ווילן צו דערהייַנטיקן אונדזער ** צו די לינקס, אַנדערש מיר ווילן צו דערהייַנטיקן אונדזער ** צו די רעכט. [תּלמיד] טוט וואָס באַקומען די טייַטל צו די טייַטל? [באָוודען] געדענק אַז - ** טרעע.ריגהט איז אַ נאָדע שטערן. [תּלמיד, אַנינטעלאַדזשאַבאַל] >> יאָ. ** טרעע.ריגהט איז ווי דעם טייַטל אָדער עפּעס. אַזוי דורך גענומען אַ טייַטל צו וואָס, וואָס גיט מיר וואָס איך ווילן פון די טייַטל צו אַז באָכער. [תּלמיד] קען מיר גיין איבער ווידער וואָס מיר זענען ניצן די צוויי פּוינטערז? [באָוודען] יאָ. אַזוי - ניט, איר קענען, און אַז לייזונג פאר איז געווען אַ וועג פון טאן עס אָן טאן צוויי פּוינטערז. איר דאַרפֿן צו זייַן ביכולת צו פֿאַרשטיין ניצן צוויי פּוינטערז, און דאָס איז אַ קלינער לייזונג. אויך, באַמערקן אַז, וואָס כאַפּאַנז אויב מיין בוים - וואָס כאַפּאַנז אויב מיין וואָרצל איז נאַל? וואָס כאַפּאַנז אויב איך טאָן דעם פאַל רעכט דאָ? אַזוי נאָדע * וואָרצל = נאַל, אַרייַנלייגן 4 אין & וואָרצל. וואָס איז וואָרצל געגאנגען צו זייַן נאָך דעם? [תּלמיד, אַנינטעלאַדזשאַבאַל] >> יאָ. וואָרצל ווערט איז געגאנגען צו זייַן 4. וואָרצל לינקס איז געגאנגען צו זייַן נאַל, וואָרצל רעכט איז געגאנגען צו זייַן נאַל. אין דעם פאַל ווו מיר האבן נישט פאָרן וואָרצל דורך אַדרעס, מיר קען נישט מאָדיפיצירן וואָרצל. אין דעם פאַל ווו די בוים - ווו וואָרצל איז נאַל, מיר נאָר געהאט צו צוריקקומען פאַלש. עס ס 'גאָרנישט מיר געקענט טאָן. מיר קענען ניט אַרייַנלייגן אַ נאָדע אין אַ ליידיק בוים. אבער איצט מיר קענען; מיר נאָר מאַכן אַ ליידיק בוים אין אַ איין-נאָדע בוים. וואָס איז יוזשאַוואַלי די דערוואַרט וועג אַז עס ס געמיינט צו אַרבעטן. דערצו, דאָס איז באטייטיק קירצער ווי אויך בעכעסקעם שפּור פון דעם פאָטער, און אַזוי איר יטעראַטע אַראָפּ אַלע די וועג. איצט איך האָבן מיין פאָטער, און איך נאָר האָט מיין פאָטער רעכט טייַטל צו דער וועלכער. אַנשטאָט, אויב מיר האבן דעם יטעראַטיוועלי, עס 'ד זייַן די זעלבע געדאַנק מיט אַ בשעת שלייף. אבער אַנשטאָט פון בעת ​​צו האַנדלען מיט מיין פאָטער טייַטל, אַנשטאָט מיין קראַנט טייַטל וואָלט זייַן די זאַך אַז איך בין גלייַך מאַדאַפייינג צו פונט צו מיין נייַ נאָדע. איך טאָן ניט האָבן צו האַנדלען מיט צי עס ס פּוינטינג צו די לינקס. איך טאָן ניט האָבן צו האַנדלען מיט צי עס ס פּוינטינג צו די רעכט. עס ס נאָר וועלכער דעם טייַטל איז, איך בין געגאנגען צו שטעלן אים צו פונט צו מיין נייַ נאָדע. אַלעמען פֿאַרשטיין ווי עס אַרבעט? אויב נישט וואָס טאָן מיר ווילן צו טאָן אים דעם וועג, אָבער בייַ מינדסטער אַז דאָס אַרבעט ווי אַ לייזונג? [תּלמיד] וואו טאָן מיר צוריקקומען אמת? [באָוודען] אַז ס מיסטאָמע רעכט דאָ. אויב מיר ריכטיק אַרייַנלייגן עס, צוריקקומען אמת. אַנדערש, אַראָפּ דאָ מיר רע געגאנגען צו ווילן צו צוריקקומען וועלכער אַרייַנלייגן קערט. און וואָס ס ספּעציעל וועגן דעם רעקורסיווע פונקציאָנירן? עס ס עק רעקורסיווע, אַזוי ווי לאַנג ווי מיר צונויפנעמען מיט עטלעכע אַפּטאַמאַזיישאַן, עס וועט דערקענען אַז און איר וועט קיינמאָל באַקומען אַ אָנלייגן לויפן פון דעם, אַפֿילו אויב אונדזער בוים האט אַ הייך פון 10,000 אָדער 10,000,000. [תּלמיד, אַנינטעלאַדזשאַבאַל] [באָוודען] איך טראַכטן עס טוט עס בייַ דאַש - אָדער וואָס אַפּטאַמאַזיישאַן מדרגה איז פארלאנגט פֿאַר אַ עק רעקורסיאָן צו ווערן אנערקענט. איך טראַכטן עס אנערקענט - גקק און קלאַנג אויך האָבן פאַרשידענע מינינגז פֿאַר זייער אַפּטאַמאַזיישאַן לעוועלס. איך ווילן צו זאָגן עס ס דאַשאָ 2, פֿאַר זיכער אַז עס וועט דערקענען עק רעקורסיאָן. אבער מיר - איר קען בויען ווי אַ פיבאָנאָקסי בייַשפּיל אָדער עפּעס. עס ס נישט גרינג צו פּרובירן מיט דעם, ווייַל עס ס 'שווער צו בויען אַ ביינערי בוים אַז ס אַזוי גרויס. אבער יאָ, איך טראַכטן עס ס דאַשאָ 2, אַז אויב איר צונויפנעמען מיט דאַשאָ 2, עס וועט קוקן פֿאַר עק רעקורסיאָן און אַפּטאַמייז אַז אויס. זאל ס גיין צוריק צו - אַרייַנלייגן ס 'ממש די לעצטע זאַך עס דאַרף. זאל ס גיין צוריק צו דער אַרייַנלייגן איבער דאָ ווו מיר רע געגאנגען צו טאָן די זעלבע געדאַנק. עס וועט נאָך האָבן די פלאָ פון ניט זייַענדיק קענען צו לעגאַמרע שעפּן ווען דער וואָרצל זיך איז נאַל, אָדער די פאַרגאַנגענהייַט פּאָזיציע איז נאַל, אָבער אַנשטאָט פון דילינג מיט אַ פאָטער טייַטל, לאָזן ס צולייגן די זעלבע לאָגיק פון בעכעסקעם פּוינטערז צו פּוינטערז. אויב דאָ מיר האַלטן אונדזער נאָדע ** קער, און מיר טאָן ניט דאַרפֿן צו האַלטן שפּור פון רעכט ענימאָר, אָבער נאָדע ** קער = & בוים. און איצט אונדזער בשעת שלייף איז געגאנגען צו זייַן בשעת * קער טוט ניט גלייַך נאַל. דו זאלסט נישט דאַרפֿן צו האַלטן שפּור פון עלטערן ענימאָר. דו זאלסט נישט דאַרפֿן צו האַלטן שפּור פון לינקס און רעכט. און איך וועט רופן עס טעמפּ, ווייַל מיר ניטאָ שוין ניצן טעמפּ. אָוקיי. אַזוי אויב (ווערט> * טעמפּ), דעמאָלט & (* טעמפּ) -> רעכט אַנדערש טעמפּ = & (* טעמפּ) -> לינקס. און איצט, בייַ דעם פונט, נאָך דעם בשעת שלייף, איך בלויז טאָן דעם ווייַל אפֿשר עס ס גרינגער צו טראַכטן וועגן יטעראַטיוועלי ווי רעקורסיוועלי, אָבער נאָך דעם בשעת שלייף, * טעמפּ איז די טייַטל מיר ווילן צו טוישן. איידער מיר האט פאָטער, און מיר געוואלט צו ענדערן אָדער פאָטער לינקס אָדער פאָטער רעכט, אָבער אויב מיר ווילן צו טוישן פאָטער רעכט, דעמאָלט * טעמפּ איז פאָטער רעכט, און מיר קענען טוישן עס גלייַך. אַזוי אַראָפּ דאָ, מיר קענען טאָן * טעמפּ = נעוונאָדע, און אַז ס עס. אַזוי באַמערקן, אַלע מיר האבן אין דעם איז געווען נעמען אויס שורות פון קאָד. אין סדר צו האַלטן שפּור פון דעם פאָטער אין אַלע וואָס איז נאָך מי. דאָ, אויב מיר נאָר האַלטן שפּור פון די טייַטל צו די טייַטל, און אַפֿילו אויב מיר געוואלט צו באַקומען באַפרייַען פון אַלע די געגרייַזלט ברייסאַז איצט, מאַכן עס קוקן קירצער. דאס איצט איז די פּינטלעך זעלביקער לייזונג, אָבער ווייניקערע שורות פון קאָד. אַמאָל איר אָנהייב רעקאַגנייזינג דעם ווי אַ גילטיק לייזונג, עס ס אויך גרינגער צו סיבה וועגן ווי ווי, אָוקיי, וואָס טאָן איך האָבן דעם פאָן בייַ ינט רעכט? וואָס טוט וואָס מיינען? אָה, עס ס כדי מרמז אַז יעדער צייַט איך גיין רעכט, איך דאַרפֿן צו שטעלן עס, אַנדערש אויב איך גיין לינקס איך דאַרפֿן צו שטעלן אים צו נול. דאָ, איך טאָן ניט האָבן צו סיבה וועגן וואָס; עס ס נאָר גרינגער צו טראַכטן וועגן. שאלות? [תּלמיד, אַנינטעלאַדזשאַבאַל] >> יאָ. אָוקיי, אַזוי אין די לעצטע ביסל - איך טרעפן איינער שנעל און גרינג פונקציאָנירן מיר קענען טאָן איז, לעץ - צוזאַמען, איך טרעפן, פּרובירן און שרייַבן אַ כּולל פֿונקציע וואָס טוט ניט זאָרגן צי עס איז אַ ביינערי זוכן בוים. דעם כּולל פונקציאָנירן זאָל צוריקקומען אמת אויב ערגעץ אין דעם גענעראַל ביינערי בוים איז דער ווערט מיר רע קוקן פֿאַר. אַזוי לאָזן ס ערשטער טאָן עס רעקורסיוועלי און דעמאָלט מיר וועט טאָן עס יטעראַטיוועלי. מיר קענען פאקטיש נאָר טאָן עס צוזאַמען, ווייַל דאָס איז געגאנגען צו זייַן טאַקע קורץ. וואָס איז מיין באַזע פאַל געגאנגען צו זייַן? [תּלמיד, אַנינטעלאַדזשאַבאַל] [באָוודען] אזוי אויב (בוים == נאַל), דאַן וואָס? [תּלמיד] צוריק פאַלש. [באָוודען] אַנדערש, גוט, איך טאָן ניט דאַרפֿן די אַנדערש. אויב איז מיין אנדערע באַזע פאַל. [תּלמיד] טרי 'ס ווערט? >> יאָ. אַזוי אויב (בוים-> ווערט == ווערט. נאָטיץ מיר רע צוריק צו נאָדע *, ניט נאָדע ** ס? כּולל וועט קיינמאָל דאַרפֿן צו נוצן אַ נאָדע **, זינט מיר זענען נישט מאַדאַפייינג פּוינטערז. מיר רע נאָר טראַווערסינג זיי. אויב אַז כאַפּאַנז, דעמאָלט מיר ווילן צו צוריקקומען אמת. אַנדערש מיר ווילן צו דורך די קינדער. אַזוי מיר קענען נישט סיבה וועגן צי אַלץ צו דער לינקס איז ווייניקער און אַלץ צו די רעכט איז גרעסער. אַזוי וואָס איז אונדזער צושטאַנד געגאנגען צו זייַן דאָ - אָדער, וואָס זענען מיר געגאנגען צו טאָן? [תּלמיד, אַנינטעלאַדזשאַבאַל] >> יאָ. צוריקקומען כּולל (ווערט, בוים-> לינקס) אָדער כּולל (ווערט, בוים-> רעכט). און אַז ס עס. און באַמערקן עס איז עטלעכע קורץ-קרייַז אפשאצונג, ווו אויב מיר פּאַסירן צו געפֿינען די ווערט אין די לינקס בוים, מיר קיינמאָל דאַרפֿן צו קוקן בייַ די רעכט בוים. אַז ס די גאנצע פונקציאָנירן. איצט לאָזן ס טאָן עס יטעראַטיוועלי, וואָס איז געגאנגען צו זייַן ווייניקער פייַן. מיר וועט נעמען די געוויינטלעך אָנהייב פון נאָדע * קער = בוים. בשעת (קער! = נאַל). געשווינד געגאנגען צו זען אַ פּראָבלעם. אויב קער - אויס דאָ, אויב מיר אלץ ברעכן אויס פון דעם, דעמאָלט מיר ווע לויפן אויס פון זאכן צו קוקן בייַ, אַזוי צוריקקומען פאַלש. אויב (קער-> ווערט == ווערט), צוריקקומען אמת. אַזוי איצט, מיר זענען אין אַ אָרט - מיר טאָן ניט וויסן צי מיר ווילן צו גיין לינקס אָדער רעכט. אַזוי אַרביטרעראַלי, לאָזן ס נאָר גיין לינקס. איך ווע דאָך לויפן אין אַן אַרויסגעבן ווו איך ווע גאָר פארלאזן אַלץ - איך וועל נאָר עווער טשעק די לינקס זייַט פון אַ בוים. איך וועל קיינמאָל טשעק עפּעס וואָס איז אַ רעכט קינד פון עפּעס. ווי טאָן איך פאַרריכטן דעם? [תּלמיד] איר האָבן צו האַלטן שפּור פון די לינקס און רעכט אין אַ אָנלייגן. [באָוודען] יאָ. אַזוי לאָזן ס מאַכן עס סטרוקט רשימה, נאָדע * ען, און דעמאָלט נאָדע ** ווייַטער? איך טראַכטן וואָס אַרבעט פייַן. מיר וועלן צו גיין איבער די לינקס, אָדער לעץ - אַרויף דאָ. סטרוקט רשימה רשימה =, עס וועט אָנהייבן אויס אין דעם סטרוקט רשימה. * רשימה = נאַל. אַזוי אַז ס 'געגאנגען צו זייַן אונדזער לינגקט רשימה פון סובטרעעס אַז מיר האָבן סקיפּט איבער. מיר זענען געגאנגען צו דורך לינקס איצט, אָבער זינט מיר ינעוואַטאַבלי דאַרפֿן צו קומען צוריק צו די רעכט, מיר רע געגאנגען צו האַלטן די רעכט זייַט ין פון אונדזער סטרוקט רשימה. דעמאָלט מיר וועט האָבן נעוו_ליסט אָדער סטרוקט, סטרוקט רשימה *, נעוו_ליסט = מאַללאָק (סיזעאָף (רשימה)). איך בין געגאנגען צו איגנאָרירן טעות-קאָנטראָלירונג וואָס, אָבער איר זאָל טשעק צו זען אויב עס ס נאַל. נעוו_ליסט די נאָדע עס ס געגאנגען צו פונט צו - טאַקע, אַז ס וואָס איך געוואלט עס אַרויף דאָ. עס ס געגאנגען צו פונט צו אַ רגע סטרוקט רשימה. אַז ס נאָר ווי לינגקט רשימות אַרבעט. דאס איז די זעלבע ווי אַ ינט לינגקט רשימה אַחוץ מיר רע נאָר ריפּלייסינג ינט מיט נאָדע *. עס ס פּונקט די זעלבע. אַזוי נעוו_ליסט, דער ווערט פון אונדזער נעוו_ליסט נאָדע, איז געגאנגען צו זייַן קער-> רעכט. די ווערט פון אונדזער נעוו_ליסט-> ווייַטער איז געגאנגען צו זייַן אונדזער אָריגינעל רשימה, און דעמאָלט מיר רע געגאנגען צו דערהייַנטיקן אונדזער רשימה צו פונט צו נעוו_ליסט. איצט מיר דאַרפֿן עטלעכע סאָרט פון וועג פון פּולינג זאכן, ווי מיר האָבן טראַווערסט די גאנצע לינקס סובטרעע. איצט מיר דאַרפֿן צו ציען שטאָפּן אויס פון אים, ווי קער איז נאַל; מיר טאָן נישט וועלן צו נאָר צוריקקומען פאַלש. מיר ווילן צו איצט ציען אַרויס אין אונדזער נייַ רשימה. א באַקוועם וועג פון טאן דעם - געזונט, פאקטיש, דאָרט ס קייפל וועגן פון טאן דעם. ווער עס יז האָבן אַ פאָרשלאָג? ווו איך זאָל טאָן דעם אָדער ווי איך זאָל טאָן דעם? מיר נאָר האָבן אַ פּאָר מינוט, אָבער קיין פֿירלייגן? אַנשטאָט פון - איין וועג, אַנשטאָט פון אונדזער צושטאַנד זייַענדיק בשעת, וואָס מיר רע דערווייַל קוקן אין איז נישט נאַל, אַנשטאָט מיר רע געגאנגען צו פאָרזעצן צו גיין ביז אונדזער רשימה זיך איז נאַל. אַזוי אויב אונדזער רשימה ענדס אַרויף זייַענדיק נאַל, דעמאָלט מיר האָבן לויפן אויס פון זאכן צו קוקן פֿאַר, צו זוכן איבער. אבער אַז מיטל אַז דער ערשטער זאַך אין אונדזער רשימה איז נאָר געגאנגען צו זייַן דער ערשטער נאָדע. די זייער ערשטער זאַך וועט זייַן - מיר ניט מער דאַרפֿן צו זען אַז. אַזוי רשימה-> N וועט זייַן אונדזער בוים. רשימה-> ווייַטער איז געגאנגען צו זייַן נאַל. און איצט בשעת רשימה טוט ניט גלייַך נאַל. קער איז געגאנגען צו ציען עפּעס פון אונדזער רשימה. אַזוי קער איז געגאנגען צו גלייַך רשימה-> N. און דעמאָלט רשימה איז געגאנגען צו גלייַך רשימה-> N, אָדער רשימה-> ווייַטער. אַזוי אויב קער ווערט יקוואַלז ווערט. איצט מיר קענען לייגן ביידע אונדזער רעכט טייַטל און אונדזער לינקס טייַטל ווי לאַנג ווי זיי ניטאָ ניט נאַל. אַראָפּ דאָ, איך טרעפן מיר זאָל האָבן געטאן אַז אין דער ערשטער אָרט. אויב (קער-> רעכט! = נאַל) דעמאָלט מיר זענען געגאנגען צו אַרייַנלייגן אַז נאָדע אין אונדזער רשימה. אויב (קער-> לינקס), דאָס איז אַ קליין ביסל פון עקסטרע אַרבעט, אָבער עס ס פייַן. אויב (קער-> לינקס! = נאַל), און מיר רע געגאנגען צו אַרייַנלייגן די לינק אין אונדזער לינגקט רשימה, און וואָס זאָל זייַן עס. מיר יטעראַטע - ווי לאַנג ווי מיר האָבן עפּעס אין אונדזער רשימה, מיר האָבן אן אנדער נאָדע צו קוקן בייַ. אַזוי מיר קוקן אין אַז נאָדע, מיר שטייַגן אונדזער רשימה צו דער ווייַטער איינער. אויב אַז נאָדע איז דער ווערט מיר רע קוקן פֿאַר, מיר קענען צוריקקומען אמת. אַנדערש אַרייַנלייגן ביידע אונדזער לינקס און רעכט סובטרעעס, ווי לאַנג ווי זיי ניטאָ ניט נאַל, אין אונדזער רשימה אַזוי אַז מיר ינעוואַטאַבלי גיין איבער זיי. אַזוי אויב זיי זענען נישט נאַל, אויב אונדזער וואָרצל טייַטל שפּיציק צו צוויי זאכן, דעמאָלט בייַ ערשטער מיר פּולד עפּעס אויס אַזוי אונדזער רשימה ענדס אַרויף זייַענדיק נאַל. און דעמאָלט מיר שטעלן צוויי זאכן צוריק אין, אַזוי איצט אונדזער רשימה איז פון גרייס 2. דעמאָלט מיר רע געגאנגען צו שלייף צוריק אַרויף און מיר רע נאָר געגאנגען צו ציען, לאָזן ס זאָגן, די לינקס טייַטל פון אונדזער וואָרצל נאָדע. און אַז וועט נאָר האַלטן געשעעניש; מיר וועט סוף אַרויף לופּינג איבער אַלץ. נאָטיץ אַז דאָס איז געווען באטייטיק מער קאָמפּליצירט אין די רעקורסיווע לייזונג. און איך ווע האט קייפל מאל אַז די רעקורסיווע לייזונג יוזשאַוואַלי האט פיל אין פּראָסט מיט די יטערייטיוו לייזונג. דאָ דעם איז פּונקט וואָס די רעקורסיווע לייזונג איז טאן. די נאָר טוישן איז אַז אַנשטאָט פון ימפּליסאַטלי ניצן דעם אָנלייגן, די פּראָגראַם אָנלייגן, ווי דיין וועג פון בעכעסקעם שפּור פון וואָס נאָודז איר נאָך דאַרפֿן צו באַזוכן, איצט איר האָבן צו בפירוש נוצן אַ לינגקט רשימה. אין ביידע פאלן איר זענט בעכעסקעם שפּור פון וואָס נאָדע נאָך דאַרף צו זייַן באזוכט. אין די רעקורסיווע פאַל עס ס נאָר גרינגער ווייַל אַ אָנלייגן איז ימפּלאַמענטאַד פֿאַר איר ווי די פּראָגראַם אָנלייגן. נאָטיץ אַז דעם לינגקט רשימה, עס איז אַ אָנלייגן. וועלכער מיר נאָר שטעלן אויף די אָנלייגן איז מיד וואָס מיר רע געגאנגען צו ציען אַוועק דעם אָנלייגן צו באַזוכן ווייַטער. מיר רע אויס פון צייַט, אָבער קיין שאלות? [תּלמיד, אַנינטעלאַדזשאַבאַל] [באָוודען] יאָ. אַזוי אויב מיר האָבן אונדזער לינגקט רשימה, קראַנט איז געגאנגען צו פונט צו דעם באָכער, און איצט מיר רע נאָר אַדוואַנסינג אונדזער לינגקט רשימה צו פאָקוס אויף דעם באָכער. מיר רע טראַווערסינג איבער די לינגקט רשימה אין אַז שורה. און דעמאָלט איך טרעפן מיר זאָל פֿרייַ אונדזער לינגקט רשימה און שטאָפּן אַמאָל איידער אומגעקערט אמת אָדער פאַלש, מיר דאַרפֿן צו יטעראַטע איבער אונדזער לינגקט רשימה און שטענדיק אַראָפּ דאָ, איך טרעפן, אויב מיר קער רעכט איז ניט גלייַך צו, לייג עס, אַזוי איצט מיר ווילן צו פֿרייַ קער ווייַל, נו, האט מיר גאָר פאַרגעסן וועגן די רשימה? יאָ. אַזוי אַז ס וואָס מיר ווילן צו טאָן דאָ. ווו ס די טייַטל? קער איז געווען דעמאָלט - מיר ווילן צו אַ סטרוקט רשימה * 10 יקוואַלז רשימה ווייַטער. פֿרייַ רשימה, רשימה = טעמפּ. און אין דעם פאַל ווו מיר צוריקקומען אמת, מיר טאָן דאַרפֿן צו יטעראַטע איבער דער רעשט פון אונדזער לינגקט רשימה פריינג זאכן. די פייַן זאַך וועגן דער רעקורסיווע לייזונג איז פריינג זאכן נאָר מיטל פּאַפּינג פאַקטאָרינגס אַוועק דעם אָנלייגן וואָס וועט פּאַסירן פֿאַר איר. אַזוי מיר ווע ניטאָ פון עפּעס אַז ס ווי 3 שורות פון שווער-צו-טראַכטן-וועגן קאָד צו עפּעס וואָס איז באטייטיק פילע מער שווער-צו-טראַכטן-וועגן שורות פון קאָד. קיין מער שאלות? אַלע רעכט. מיר רע גוט. ביי! [CS50.TV]