[Powered by Google Translate] [סעקשאַן 7] [ווייניקער באַקוועם]
[נאַטע האַרדיסאָן] [האַרוואַרד אוניווערסיטעט]
[דאס איז קס50.] [CS50.TV]
>> באַגריסן צו סעקשאַן 7.
דאַנק צו הורריקאַנע סאַנדי,
אַנשטאָט פון בעת ​​אַ נאָרמאַל אָפּטיילונג דעם וואָך,
מיר רע טאן דעם גיין-דורך, דורך דער אָפּטיילונג פון שאלות.
איך בין געגאנגען צו זייַן פאלגענדע צוזאמען מיט די פּראָבלעם באַשטעטיק 6 באַשרייַבונג,
און געגאנגען דורך אַלע פון ​​די פראגעס אין דעם
א אָפּטיילונג פון פֿראגן אָפּטיילונג.
אויב עס זענען קיין שאלות,
ביטע פּאָסטן די אויף קס50 דיסקוטירן.
>> אָלרייט. זאל ס באַקומען אנגעהויבן.
רעכט איצט איך בין קוקן בייַ בלאַט 3 פון די פּראָבלעם באַשטעטיק ספּעסיפיקאַטיאָן.
מיר רע געגאנגען צו ערשטער אָנהייב גערעדט וועגן ביינערי ביימער
זינט יענע האָבן אַ פּלאַץ פון שייכות צו דעם וואָך ס פּראָבלעם שטעלן -
די הופפמאַן טרי קאָדירונג.
איינער פון די זייער ערשטער דאַטן סטראַקטשערז מיר גערעדט וועגן אויף קס50 איז געווען די מענגע.
געדענקען אַז אַ מענגע איז אַ סיקוואַנס פון עלעמענטן -
אַלע פון ​​די זעלבע טיפּ - סטאָרד רעכט ווייַטער צו יעדער אַנדערער אין זכּרון.
אויב איך האָבן אַ ינטעגער מענגע אַז איך קענען ציען ניצן דעם באָקסעס-נומערן-ינטאַדזשערז נוסח -
זאל ס זאָגן איך האָבן 5 אין דער ערשטער קעסטל, איך האב 7 אין די רגע,
דעמאָלט איך האָבן 8, 10, און 20 אין די לעצט קעסטל.
געדענקען, די צוויי טאַקע גוט זאכן וועגן דעם מענגע
זענען אַז מיר האָבן דעם קעסיידערדיק-צייַט צוטריט צו קיין באַזונדער עלעמענט
אין די מענגע אויב מיר וויסן זייַן אינדעקס.
פֿאַר בייַשפּיל, אויב איך ווילן צו כאַפּן די דריט עלעמענט אין דער מענגע -
בייַ אינדעקס 2 ניצן אונדזער נול-באזירט ינדעקסינג סיסטעם -
איך ממש נאָר האָבן צו טאָן אַ פּשוט מאַטאַמאַטיקאַל כעזשבן,
האָפּקען צו אַז שטעלע אין דער מענגע,
ציען אויס די 8 וואָס איז סטאָרד דאָרט,
און איך בין גוט צו גיין.
>> איינער פון די שלעכט זאכן וועגן דעם מענגע - אַז מיר גערעדט וועגן
ווען מיר דיסקאַסט לינגקט רשימות -
איז אַז אויב איך ווילן צו אַרייַנלייגן אַן עלעמענט אין דעם מענגע,
איך בין געגאנגען צו האָבן צו טאָן עטלעכע שיפטינג אַרום.
פֿאַר בייַשפּיל, דעם מענגע רעכט דאָ
איז אין אויסגעשטעלט סדר - אויסגעשטעלט אין אַסענדינג סדר -
5, דעמאָלט 7, דעמאָלט 8, דאַן 10, און דעמאָלט 20 -
אָבער אויב איך ווילן צו אַרייַנלייגן די נומער 9 אין דעם מענגע,
איך בין געגאנגען צו האָבן צו יבעררוק עטלעכע פון ​​די יסודות אין סדר צו מאַכן פּלאַץ.
מיר קענען ציען דעם אויס דאָ.
איך בין געגאנגען צו האָבן צו באַוועגן די 5, די 7, און דאַן די 8;
שאַפֿן אַ ריס ווו איך קענען לייגן די 9,
און דעריבער די 10 און די 20 קענען גיין צו די רעכט פון די 9.
דאס איז מין פון אַ ווייטיק ווייַל אין די ערגסט-פאַל סצענאַר -
ווען מיר רע ווייל צו אַרייַנלייגן אָדער אין די אָנהייב אָדער אין די סוף
פון די מענגע, דיפּענדינג אויף ווי מיר רע שיפטינג -
מיר זאל סוף אַרויף ווייל צו יבעררוק אַלע פון ​​די יסודות
אַז מיר רע דערווייַל סטאָרינג אין די מענגע.
>> אַזוי, וואָס איז די וועג אַרום דעם?
די וועג אַרום דעם איז געווען צו גיין צו אונדזער לינגקט-רשימה אופֿן ווו -
אַנשטאָט פון סטאָרינג די יסודות 5, 7, 8, 10, און 20 אַלע ווייַטער צו יעדער אַנדערער אין זכּרון -
וואָס מיר אַנשטאָט האט איז געווען קראָם זיי מין פון וואוהין מיר געוואלט צו קראָם זיי
אין די לינגקט-רשימה נאָודז וואָס איך בין צייכענונג אויס דאָ, מין פון אַד דעם.
און דעמאָלט מיר פארבונדן זיי צוזאַמען ניצן די ווייַטער פּוינטערז.
איך קענען האָבן אַ טייַטל פון 5 צו די 7,
אַ טייַטל פון די 7 צו די 8,
אַ טייַטל פון די 8 צו דער 10,
און לעסאָף, אַ טייַטל פון די 10 צו די 20,
און דעמאָלט אַ נאַל טייַטל אין די 20 ינדאַקייטינג אַז דאָרט ס גאָרנישט לינקס.
די האַנדל-אַוועק אַז מיר האָבן דאָ
איז אַז איצט אויב מיר ווילן צו אַרייַנלייגן די נומער 9 אין אונדזער אויסגעשטעלט רשימה,
אַלע מיר האָבן צו טאָן איז מאַכן אַ נייע נאָדע מיט 9,
דראָט עס אַרויף צו פונט צו די צונעמען אָרט,
און דעמאָלט שייַעך-דראָט די 8 צו פונט אַראָפּ צו די 9.
אַז ס 'שיין שנעל, אַסומינג מיר וויסן פּונקט ווו מיר ווילן צו אַרייַנלייגן די 9.
אבער דער האַנדל-אַוועק אין וועקסל פֿאַר דעם איז אַז מיר ווע איצט פאַרפאַלן די קעסיידערדיק-צייַט צוטריט
צו קיין באַזונדער עלעמענט אין אונדזער דאַטן סטרוקטור.
פֿאַר בייַשפּיל, אויב איך ווילן צו געפֿינען די פערט עלעמענט אין דעם לינגקט רשימה,
איך בין געגאנגען צו האָבן צו אָנהייבן בייַ די זייער אָנהייב פון דער רשימה
און אַרבעט מיין וועג דורך קאַונטינג נאָדע-דורך-נאָדע ביז איך געפֿינען די פערט איינער.
>> אין סדר צו באַקומען בעסער צוטריט פאָרשטעלונג ווי אַ לינגקט רשימה -
אָבער אויך ריטיין עטלעכע פון ​​די בענעפיטן וואָס מיר האבן
אין טערמינען פון ינסערשאַן-צייַט פון אַ לינגקט רשימה -
אַ ביינערי בוים איז געגאנגען צו דאַרפֿן צו נוצן אַ ביסל מער זכּרון.
אין באַזונדער, אַנשטאָט פון נאָר ווייל איינער טייַטל אין אַ ביינערי בוים נאָדע -
ווי די לינגקט-רשימה נאָדע טוט -
מיר רע געגאנגען צו לייגן אַ רגע טייַטל צו די ביינערי בוים נאָדע.
אלא ווי נאָר ווייל איינער טייַטל צו דער ווייַטער עלעמענט,
מיר רע געגאנגען צו האָבן אַ טייַטל צו אַ לינקס קינד און אַ רעכט קינד.
>> זאל ס ציען אַ בילד צו זען וואָס אַז פאקטיש קוקט ווי.
ווידער, איך בין געגאנגען צו נוצן די באָקסעס און אַראָוז.
א ביינערי בוים נאָדע וועט אָנהייבן אַוועק מיט נאָר אַ פּשוט קעסטל.
עס ס געגאנגען צו האָבן אַ פּלאַץ פֿאַר די ווערט,
און דעמאָלט עס ס אויך געגאנגען צו האָבן אַ פּלאַץ פֿאַר די לינקס קינד און די רעכט קינד.
איך בין געגאנגען צו פירמע זיי דאָ.
מיר רע געגאנגען צו האָבן די לינקס קינד, און דאַן מיר רע געגאנגען צו האָבן די רעכט קינד.
עס זענען פילע פאַרשידענע וועגן פון טאן דעם.
מאל פֿאַר פּלאַץ און קאַנוויניאַנס,
איך וועט פאקטיש ציען עס ווי איך בין טאן דאָ אויף די דנאָ
ווו איך בין געגאנגען צו האָבן די ווערט בייַ די שפּיץ,
און דעריבער די רעכט קינד אויף די דנאָ-רעכט,
און די לינקס קינד אויף די דנאָ-לינקס.
געגאנגען צוריק צו דעם שפּיץ דיאַגראַמע,
מיר האָבן די ווערט אין דער זייער שפּיץ,
דעמאָלט מיר האָבן די לינקס-קינד טייַטל, און דאַן מיר האָבן די רעכט-קינד טייַטל.
>> אין די פּראָבלעם באַשטעטיק באַשרייַבונג,
מיר רעדן וועגן צייכענונג אַ נאָדע וואָס האט אַ ווערט 7,
און דעמאָלט אַ לינקס-קינד טייַטל וואָס איז נאַל, און אַ רעכט-קינד טייַטל וואָס איז נאַל.
מיר קענען אָדער שרייַבן הויפּטשטאָט נאַל אין די פּלאַץ פֿאַר
ביידע די לינקס קינד און די רעכט קינד, אָדער מיר קענען ציען דעם דיאַגאָנאַל צעהאַקן
דורך יעדער פון די באָקסעס צו אָנווייַזן אַז עס ס נאַל.
איך בין געגאנגען צו טאָן וואָס נאָר ווייַל אַז ס סימפּלער.
וואָס איר זען דאָ זענען צוויי וועגן פון דיאַגראַממינג אַ זייער פּשוט ביינערי בוים נאָדע
ווו מיר האָבן די ווערט 7 און נאַל קינד פּוינטערז.
>> די רגע טייל פון אונדזער באַשרייַבונג רעדט וועגן ווי מיט לינגקט רשימות -
געדענקען, מיר נאָר געהאט צו האַלטן אויף צו די זייער ערשטער עלעמענט אין אַ רשימה
צו געדענקען די גאנצע רשימה -
און פּונקט אַזוי, מיט אַ ביינערי בוים, מיר נאָר האָבן צו האַלטן אויף צו איינער טייַטל צו דעם בוים
אין סדר צו טייַנען קאָנטראָל איבער די גאנצע דאַטן סטרוקטור.
דאס ספּעציעל עלעמענט פון די בוים איז גערופן די וואָרצל נאָדע פון ​​די בוים.
פֿאַר בייַשפּיל, אויב דעם איין נאָדע - דעם נאָדע מיט דעם ווערט 7
מיט נאַל לינקס-און רעכט-קינד פּוינטערז -
זענען די נאָר ווערט אין אונדזער בוים,
דעמאָלט דעם וואָלט זייַן אונדזער וואָרצל נאָדע.
עס ס די זייער אָנהייב פון אונדזער בוים.
מיר קענען זען דאָס אַ ביסל מער קלאר אַמאָל מיר אָנהייבן אַדינג מער נאָודז צו אונדזער בוים.
זאל מיר ציען אַרויף אַ נייַ בלאַט.
>> איצט מיר רע געגאנגען צו ציען אַ בוים וואָס האט 7 בייַ די וואָרצל,
און 3 ין פון די לינקס קינד, און 9 ין פון די רעכט קינד.
ווידער, דאָס איז שיין פּשוט.
מיר ווע גאַט 7, ציען אַ נאָדע פֿאַר די 3, אַ נאָדע פֿאַר 9,
און איך בין געגאנגען צו שטעלן די לינקס-קינד טייַטל פון 7 צו פונט צו די נאָדע מיט 3,
און די רעכט-קינד טייַטל פון די נאָדע מיט 7 צו די נאָדע מיט 9.
איצט, זינט 3 און 9 טאָן ניט האָבן קיין קינדער,
מיר רע געגאנגען צו שטעלן אַלע פון ​​זייער קינד פּוינטערז צו זייַן נאַל.
דאָ, דער וואָרצל פון אונדזער בוים קאָראַספּאַנדז צו די נאָדע מיט די נומער 7.
איר קענען זען אַז אויב אַלע מיר האָבן איז אַ טייַטל צו אַז וואָרצל נאָדע,
מיר קענען דעריבער גיין דורך אונדזער בוים און צוטריט ביידע קינד נאָודז -
ביידע 3 און 9.
ניט דאַרפֿן צו טייַנען פּוינטערז צו יעדער איין נאָדע אויף דעם בוים.
אָלרייט. איצט מיר רע געגאנגען צו לייגן אן אנדער נאָדע צו דעם דיאַגראַמע.
מיר רע געגאנגען צו לייגן אַ נאָדע מיט 6,
און מיר רע געגאנגען צו לייגן דעם ווי די רעכט קינד פון דער נאָדע מיט 3.
צו טאָן וואָס, איך בין געגאנגען צו מעקן אַז נאַל טייַטל אין די 3-נאָדע
און דראָט עס אַרויף צו פונט צו די נאָדע מיט 6. אָלרייט.
>> אין דעם פונט, לאָזן ס גיין איבער אַ קליין ביסל פון טערמינאָלאָגיע.
צו אָנהייבן, די סיבה אַז דאָס איז גערופן אַ ביינערי בוים אין באַזונדער
איז אַז עס האט צוויי קינד פּוינטערז.
עס זענען אנדערע מינים פון ביימער וואָס האָבן מער קינד פּוינטערז.
אין באַזונדער, איר האט אַ 'פּרובירן' אין פּראָבלעם באַשטעטיק 5.
איר וועט באַמערקן אַז אין וואָס פּרובירן, איר האט 27 אַנדערש פּוינטערז צו פאַרשידענע קינדער -
איינער פֿאַר יעדער פון די 26 אותיות אין די ענגליש אלפאבעט,
און דעריבער די 27 פֿאַר די אַפּאָסטראָפע -
אַזוי, אַז ס ענלעך צו אַ טיפּ פון בוים.
אבער דאָ, זינט עס ס ביינערי, מיר נאָר האָבן צוויי קינד פּוינטערז.
>> אין דערצו צו דעם וואָרצל נאָדע אַז מיר גערעדט וועגן,
מיר ווע אויך געווען פארווארפן אַרום דעם טערמין 'קינד.'
וואָס טוט עס מיינען פֿאַר איין נאָדע צו זייַן אַ קינד פון אן אנדער נאָדע?
עס ממש מיטל אַז אַ קינד נאָדע איז אַ קינד פון אן אנדער נאָדע
אויב אַז אנדערע נאָדע האט איינער פון זייַן קינד פּוינטערז שטעלן צו פונט צו אַז נאָדע.
צו שטעלן דעם אין מער באַטאָנען תּנאָים,
אויב 3 איז אנגעוויזן צו דורך איינער פון די קינד פּוינטערז פון 7, דעמאָלט 3 איז אַ קינד פון 7.
אויב מיר זענען צו רעכענען אויס וואָס די קינדער פון 7 זענען -
געזונט, מיר זען אַז 7 האט אַ טייַטל צו 3 און אַ טייַטל צו 9,
אַזוי 9 און 3 זענען די קינדער פון 7.
נייַן האט קיין קינדער ווייַל זייַן קינד פּוינטערז זענען נאַל,
און 3 האט בלויז איין קינד, 6.
זעקס אויך האט קיין קינדער ווייַל ביידע פון ​​זייַן פּוינטערז זענען נאַל, וואָס מיר וועט ציען רעכט איצט.
>> אַדדיטיאָנאַללי, מיר אויך רעדן וועגן די עלטערן פון אַ באַזונדער נאָדע,
און דאָס איז, ווי איר 'ד דערוואַרטן, די פאַרקערט פון דעם קינד באַשרייַבונג.
יעדער נאָדע האט בלויז איין פאָטער - אַנשטאָט פון צוויי ווי איר זאל דערוואַרטן מיט יומאַנז.
פֿאַר בייַשפּיל, דער פאָטער פון 3 איז 7.
דער פאָטער פון 9 איז אויך 7, און דער פאָטער פון 6 איז 3. ניט פיל צו עס.
מיר אויך האָבן תּנאָים צו רעדן וועגן זיידע - באָבע און אייניקלעך,
און מער בכלל מיר רעדן וועגן די אָוועס
און קינדסקינדער פון אַ באַזונדער נאָדע.
די אַנסעסטער פון אַ נאָדע - אָדער אָוועס, אלא, פון אַ נאָדע -
זענען אַלע פון ​​די נאָודז וואָס ליגן אויף די דרך פון די וואָרצל צו אַז נאָדע.
פֿאַר בייַשפּיל, אויב איך בין קוקן בייַ די נאָדע 6,
דעריבער די אָוועס זענען געגאנגען צו זייַן ביידע 3 און 7.
די אָוועס פון 9, פֿאַר בייַשפּיל, זענען - אויב איך בין קוקן בייַ די נאָדע 9 -
דעריבער די אַנסעסטער פון 9 איז נאָר 7.
און קינדסקינדער זענען פּונקט די פאַרקערט.
אויב איך ווילן צו קוקן אין אַלע פון ​​די קינדסקינדער פון 7,
דעמאָלט איך האָבן צו קוקן אין אַלע פון ​​די נאָודז ונטער עס.
אַזוי, איך האב 3, 9, און 6 אַלע ווי קינדסקינדער פון 7.
>> די לעצט טערמין אַז מיר וועט רעדן וועגן איז דעם געדאנק פון זייַענדיק אַ סיבלינג.
סיבלינגס - מין פון פאלגענדע צוזאמען אויף די משפּחה טערמינען -
זענען נאָודז וואָס זענען אין די זעלבע גלייַך אין דער בוים.
אַזוי, 3 און 9 ביסט סיבלינגז ווייַל זיי זענען אין דער זעלביקער מדרגה אין דעם בוים.
זיי ביידע האָבן די זעלבע פאָטער, 7.
די 6 האט קיין סיבלינגז ווייַל 9 טוט נישט האָבן קיין קינדער.
און 7 טוט נישט האָבן קיין סיבלינגז ווייַל עס ס דער וואָרצל פון אונדזער בוים,
און דאָרט ס נאָר אלץ 1 וואָרצל.
פֿאַר 7 צו האָבן סיבלינגז עס וואָלט האָבן צו זייַן אַ נאָדע אויבן 7.
עס וואָלט האָבן צו זייַן אַ פאָטער פון 7, אין וועלכע פאַל 7 וואָלט ניט מער זייַן דעם וואָרצל פון דעם בוים.
דעמאָלט וואָס נייַ פאָטער פון 7 וואָלט אויך האָבן צו האָבן אַ קינד,
און אַז קינד וואָלט דעמאָלט זייַן דער סיבלינג פון 7.
>> אָלרייט. מאָווינג אויף.
ווען מיר אנגעהויבן אונדזער דיסקוסיע פון ​​ביינערי ביימער,
מיר גערעדט וועגן ווי מיר זענען געגאנגען צו נוצן זיי צו
געווינען אַ מייַלע איבער ביידע ערייז און לינגקט רשימות.
און דער וועג מיר רע געגאנגען צו טאָן וואָס איז מיט דעם אָרדערינג פאַרמאָג.
מיר זאָגן אַז אַ ביינערי בוים איז באפוילן, לויט צו די באַשרייַבונג,
אויב פֿאַר יעדער נאָדע אין אונדזער בוים, אַלע פון ​​זייַן קינדסקינדער אויף די לינקס -
די לינקס קינד און אַלע פון ​​די לינקס קינד ס קינדסקינדער -
האָבן לעסער וואַלועס, און אַלע פון ​​די נאָודז אויף די רעכט -
די רעכט קינד און אַלע פון ​​די רעכט קינד ס קינדסקינדער -
האָבן נאָודז גרעסער ווי די ווערט פון די קראַנט נאָדע אַז מיר רע קוקן בייַ.
נאָר פֿאַר פּאַשטעס, מיר רע געגאנגען צו יבערנעמען אַז עס זענען נישט קיין דופּליקאַט נאָודז אין אונדזער בוים.
פֿאַר בייַשפּיל, אין דעם בוים מיר ניטאָ ניט געגאנגען צו האַנדלען מיט דער פאַל
ווו מיר האָבן די ווערט 7 בייַ די וואָרצל
און דעמאָלט מיר אויך האָבן די ווערט 7 אנדערש אין די בוים.
אין דעם פאַל, איר וועט באַמערקן אַז דעם בוים איז טאַקע באפוילן.
מיר האָבן די ווערט 7 בייַ די וואָרצל.
אַלץ צו די לינקס פון 7 -
אויב איך ופמאַכן אַלע פון ​​די ביסל פֿאַלט דאָ -
אַלץ צו די לינקס פון 7 - די 3 און די 6 -
יענע וואַלועס זענען ביידע ווייניקער ווי 7, און אַלץ צו די רעכט - וואָס איז נאָר דעם 9 -
איז גרעסער ווי 7.
>> דאס איז נישט דער בלויז באפוילן בוים מיט די וואַלועס,
אָבער לאָזן ס ציען אַ ביסל מער פון זיי.
עס איז פאקטיש אַ גאַנץ בינטל פון וועגן וואָס מיר קענען טאָן דעם.
איך בין געגאנגען צו נוצן אַ סטענאָגראַפיע נאָר צו האַלטן דאס פּשוט ווו -
אלא ווי צייכענונג אויס די גאנצע באָקסעס-און-אַראָוז -
איך בין נאָר געגאנגען צו ציען די נומערן און לייגן אַראָוז קאַנעקטינג זיי.
צו אָנהייב, מיר וועט נאָר שרייַבן אונדזער אָריגינעל בוים ווידער ווו מיר האבן 7, און דעמאָלט אַ 3,
און דעמאָלט 3 שפּיציק צוריק צו די רעכט צו די 6,
און 7 האט אַ רעכט קינד וואָס איז געווען 9.
אָלרייט. וואָס ס אנדערן וועג וואָס מיר געקענט שרייַבן דעם בוים?
אַנשטאָט פון בעת ​​3 זייַן די לינקס קינד פון 7,
מיר קען אויך האָבן די 6 זייַן די לינקס קינד פון 7,
און דעמאָלט 3 זייַן די לינקס קינד פון דער 6.
וואָס וואָלט קוק ווי דעם בוים רעכט דאָ ווו איך ווע גאַט 7,
דעמאָלט 6, דעמאָלט 3, און אַ 9 אויף די רעכט.
מיר אויך טאָן ניט האָבן צו האָבן 7 ווי אונדזער וואָרצל נאָדע.
מיר קען אויך האָבן 6 ווי אונדזער וואָרצל נאָדע.
וואָס וואָלט אַז קוק ווי?
אויב מיר רע געגאנגען צו טייַנען דעם באפוילן פאַרמאָג,
אַלץ צו די לינקס פון די 6 האט צו זייַן ווייניקער ווי עס.
עס ס נאָר איין מעגלעכקייט, און אַז ס '3.
אבער דעמאָלט ווי די רעכט קינד פון 6, מיר האָבן צוויי פּאַסאַבילאַטיז.
ערשטער, מיר קען האָבן די 7 און דאַן די 9,
אָדער מיר קען ציען עס - ווי איך בין וועגן צו טאָן דאָ -
ווו מיר האָבן די 9 ווי די רעכט קינד פון דער 6,
און דעריבער די 7 ווי די לינקס קינד פון די 9.
>> איצט, 7 און 6 ביסט נישט דער נאָר מעגלעך וואַלועס פֿאַר די וואָרצל.
מיר קען אויך האָבן 3 זייַן בייַ די וואָרצל.
וואָס כאַפּאַנז אויב 3 איז בייַ די וואָרצל?
דאָ, דאס באַקומען אַ קליין ביסל טשיקאַווע.
דרייַ טוט נישט האָבן קיין וואַלועס וואָס זענען ווייניקער ווי עס,
אַזוי אַז גאַנץ לינקס זייַט פון די בוים איז נאָר געגאנגען צו זייַן נאַל.
עס ס ניט געגאנגען צו זייַן עפּעס דאָרט.
צו די רעכט, מיר קען רשימה זאכן אין אַסענדינג סדר.
מיר קען האָבן 3, דעמאָלט 6, דעמאָלט 7, דעמאָלט 9.
אָדער, מיר קען טאָן 3, דעמאָלט 6, דעמאָלט 9, דעמאָלט 7.
אָדער, מיר קען טאָן 3, דעמאָלט 7, דעמאָלט 6, דעמאָלט 9.
אָדער, 3, 7 - פאקטיש ניט, מיר קענען נישט טאָן אַ 7 ענימאָר.
אַז ס אונדזער איין זאַך דאָרט.
מיר קענען טאָן 9, און דעריבער פון די 9 מיר קענען טאָן 6 און דעמאָלט 7.
אָדער, מיר קענען טאָן 3, דעמאָלט 9, דעמאָלט 7, און דעמאָלט 6.
>> איין זאַך צו ציען דיין ופמערקזאַמקייַט צו דאָ איז
אַז די ביימער זענען אַ ביסל טשודנע-קוקן.
אין באַזונדער, אויב מיר קוקן אין די 4 ביימער אויף די רעכט זייַט -
איך וועט קרייַז זיי, דאָ -
די ביימער קוקן כּמעט פּונקט ווי אַ לינגקט רשימה.
יעדער נאָדע האט בלויז איין קינד,
און אַזוי מיר טאָן ניט האָבן קיין פון דעם בוים-ווי סטרוקטור וואָס מיר זען, פֿאַר בייַשפּיל,
אין דעם איין יינציק בוים איבער דאָ אויף די דנאָ לינקס.
די ביימער זענען פאקטיש גערופן דידזשענערייט ביינערי ביימער,
און מיר וועט רעדן וועגן די מער אין דער צוקונפֿט -
ספּעציעל אויב איר גיין אויף צו נעמען אנדערע קאָמפּיוטער וויסנשאַפֿט קאָרסאַז.
די ביימער זענען דידזשענערייט.
זיי ניטאָ ניט זייער נוציק ווייַל, טאַקע, דעם סטרוקטור לענדז זיך
צו לאָאָקופּ מאל ענלעך צו אַז פון אַ לינגקט רשימה.
מיר טאָן נישט באַקומען צו נעמען מייַלע פון ​​די עקסטרע זכּרון - דעם עקסטרע טייַטל -
ווייַל פון אונדזער סטרוקטור זייַענדיק שלעכט אין דעם וועג.
אלא ווי גיין אויף און ציען אויס די ביינערי ביימער וואָס האָבן 9 בייַ די וואָרצל,
וואָס איז די לעצט פאַל אַז מיר וואָלט האָבן,
מיר רע אַנשטאָט, בייַ דעם פונט, געגאנגען צו רעדן אַ ביסל ביסל וועגן דעם אנדערע טערמין
אַז מיר נוצן ווען גערעדט וועגן ביימער, וואָס איז גערופן די הייך.
>> די הייך פון אַ בוים איז דער ווייַטקייט פון דעם וואָרצל צו די מערסט-ווייַט נאָדע,
אָדער אלא די נומער פון כאַפּס וואָס איר וואָלט האָבן צו מאַכן אין סדר צו
אָנהייב פון דער וואָרצל און דעמאָלט סוף אַרויף בייַ די מערסט-ווייַט נאָדע אין דעם בוים.
אויב מיר קוקן אין עטלעכע פון ​​די ביימער וואָס מיר ווע ציען רעכט דאָ,
מיר קענען זען אַז אויב מיר נעמען דעם בוים אין די שפּיץ לינקס ווינקל און מיר אָנהייבן בייַ די 3,
דעמאָלט מיר האָבן צו מאַכן 1 האָפּקען צו באַקומען צו די 6, אַ רגע האָפּקען צו באַקומען צו די 7,
און 1/3 האָפּקען צו באַקומען צו דעם 9.
אַזוי, די הייך פון דעם בוים איז 3.
מיר קענען טאָן די זעלבע געניטונג פֿאַר די אנדערע ביימער אַוטליינד מיט דעם גרין,
און מיר זען אַז די הייך פון אַלע פון ​​די ביימער איז אויך טאַקע 3.
אַז ס טייל פון וואָס מאכט זיי דידזשענערייט -
אַז זייער הייך איז נאָר איינער ווייניקער ווי די נומער פון נאָודז אין די גאנצע בוים.
אויב מיר קוקן אין דעם אנדערע בוים אַז ס ינסערקאַלד מיט רויט, אויף די אנדערע האַנט,
מיר זען אַז דער רובֿ-ווייַט בלאַט נאָודז זענען די 6 און די 9 -
די בלעטער זייַענדיק יענע נאָודז וואָס האָבן קיין קינדער.
אַזוי, אין סדר צו באַקומען פון די וואָרצל נאָדע צו אָדער די 6 אָדער די 9,
מיר האָבן צו מאַכן איין האָפּקען צו באַקומען צו דער 7 און דאַן אַ רגע האָפּקען צו באַקומען צו דעם 9,
און פּונקט אַזוי, נאָר אַ רגע האָפּקען פון די 7 צו באַקומען צו די 6.
אַזוי, די הייך פון דעם בוים איבער דאָ איז בלויז 2.
איר קענען גיין צוריק און טאָן אַז פֿאַר אַלע פון ​​די אנדערע ביימער אַז מיר פריער דיסקאַסט
אָנהייב מיט דער 7 און דער 6,
און איר וועט געפֿינען אַז די הייך פון אַלע פון ​​יענע ביימער איז אויך 2.
>> די סיבה מיר ווע שוין גערעדט וועגן באפוילן ביינערי ביימער
און וואָס זיי ניטאָ קיל איז ווייַל איר קענען זוכן דורך זיי אין
אַ זייער ענלעך וועג צו שאַרף איבער אַ אויסגעשטעלט מענגע.
דאס איז ווו מיר רעדן וועגן געטינג אַז ימפּרוווד לאָאָקופּ צייַט
איבער די פּשוט לינגקט רשימה.
מיט אַ לינגקט רשימה - אויב איר ווילן צו געפֿינען אַ באַזונדער עלעמענט -
איר ניטאָ בייַ בעסטער געגאנגען צו טאָן עטלעכע סאָרט פון לינעאַר זוכן
ווו איר אָנהייב אין די אָנהייב פון אַ רשימה און האָפּקען איינער-דורך-איינער -
איינער נאָדע דורך איינער נאָדע -
דורך די גאנצע רשימה ביז איר געפֿינען וועלכער איר ניטאָ שאַרף פֿאַר.
וועראַז, אויב איר האָבן אַ ביינערי בוים אַז ס סטאָרד אין דעם פייַן פֿאָרמאַט,
איר קענען פאקטיש באַקומען מער פון אַ ביינערי זוכן געגאנגען אויף
ווו איר טיילן און קאַנגקער
און זוכן דורך דער צונעמען האַלב פון די בוים בייַ יעדער שריט.
זאל ס זען ווי וואָס אַרבעט.
>> אויב מיר האָבן - ווידער, גיי צוריק צו אונדזער אָריגינעל בוים -
מיר אָנהייבן בייַ 7, מיר האָבן 3 אויף די לינקס, 9 אויף די רעכט,
און ונטער דעם 3 מיר האָבן די 6.
אויב מיר ווילן צו זוכן פֿאַר די נומער 6 אין דעם בוים, מיר 'ד אָנהייבן בייַ די וואָרצל.
מיר וואָלט פאַרגלייַכן די ווערט מיר רע קוקן פֿאַר, זאָגן 6,
צו די ווערט סטאָרד אין די נאָדע אַז מיר רע דערווייַל קוקן בייַ, 7,
געפֿינען אַז 6 איז טאַקע ווייניקער ווי 7, אַזוי מיר 'ד מאַך צו די לינקס.
אויב די ווערט פון 6 האט שוין גרעסער ווי 7, מיר וואָלט האָבן אַנשטאָט אריבערגעפארן צו די רעכט.
זינט מיר וויסן אַז - רעכט צו דער סטרוקטור פון אונדזער באפוילן ביינערי בוים -
אַלע פון ​​די וואַלועס ווייניקער ווי 7 זענען געגאנגען צו זייַן סטאָרד צו די לינקס פון 7,
דאָרט ס ניט דאַרפֿן צו אַפֿילו אַרן קוקן דורך די רעכט זייַט פון די בוים.
אַמאָל מיר מאַך צו די לינקס און מיר רע איצט בייַ די נאָדע מיט 3,
מיר קענען טאָן אַז זעלביקער פאַרגלייַך ווידער ווו מיר פאַרגלייַכן די 3 און די 6.
און מיר געפֿינען אַז בשעת 6 - די ווערט מיר רע קוקן פֿאַר - איז גרעסער ווי 3,
מיר קענען גיין צו די רעכט זייַט פון די נאָדע מיט 3.
עס ס קיין לינקס זייַט דאָ, אַזוי מיר קען האָבן איגנאָרירט וואָס.
אבער מיר נאָר וויסן אַז ווייַל מיר רע קוקן בייַ די בוים זיך,
און מיר קענען זען אַז די בוים האט קיין קינדער.
>> עס ס אויך שיין גרינג צו קוקן אַרויף 6 אין דעם בוים אויב מיר רע טאן עס זיך ווי יומאַנז,
אָבער לאָזן ס נאָכפאָלגן דעם פּראָצעס מאַקאַניקלי ווי אַ קאָמפּיוטער וואָלט טאָן
צו טאַקע פֿאַרשטיין די אַלגערידאַם.
אין דעם פונט, מיר רע איצט קוקן בייַ אַ נאָדע אַז כּולל 6,
און מיר רע קוקן פֿאַר דעם ווערט 6,
אַזוי, טאַקע, מיר ווע געפונען די צונעמען נאָדע.
מיר געפונען די ווערט 6 אין אונדזער בוים, און מיר קענען האַלטן אונדזער זוכן.
אין דעם פונט, דיפּענדינג אויף וואָס ס 'געגאנגען אויף,
מיר קענען זאָגן, יאָ, מיר האָבן געפונען דעם ווערט 6, עס יגזיסץ אין אונדזער בוים.
אָדער, אויב מיר רע פּלאַנירונג צו אַרייַנלייגן אַ נאָדע אָדער טאָן עפּעס, מיר קענען טאָן אַז בייַ דעם פונט.
>> זאל ס טאָן אַ פּאָר מער לוקאַפּס נאָר צו זען ווי דאָס אַרבעט.
זאל ס קוק אין וואָס כאַפּאַנז אויב מיר זענען געווען צו פּרובירן און קוק אַרויף די ווערט 10.
אויב מיר זענען צו קוקן אַרויף די ווערט 10, מיר וואָלט אָנהייבן בייַ די וואָרצל.
מיר 'ד זען אַז 10 איז גרעסער ווי 7, אַזוי מיר' ד מאַך צו די רעכט.
מיר 'ד באַקומען צו דעם 9 און פאַרגלייַכן 9 צו די 10 און זען אַז 9 איז טאַקע ווייניקער ווי 10.
אַזוי ווידער, מיר 'ד פּרובירן צו מאַך צו די רעכט.
אבער בייַ דעם פונט, מיר 'ד באַמערקן אַז מיר ניטאָ בייַ אַ נאַל נאָדע.
עס ס 'גאָרנישט דאָרט. עס ס 'גאָרנישט ווו די 10 זאָל זייַן.
דאס איז ווו מיר קענען באַריכט דורכפאַל - אַז עס איז טאַקע קיין 10 אין דעם בוים.
און ענדלעך, לאָזן ס גיין דורך דעם פאַל ווו מיר רע טריינג צו קוקן אַרויף 1 אין דעם בוים.
דאס איז ענלעך צו וואָס כאַפּאַנז אויב מיר קוקן אַרויף 10, אַחוץ אַנשטאָט פון געגאנגען צו די רעכט,
מיר רע געגאנגען צו גיין צו די לינקס.
מיר אָנהייבן בייַ די 7 און זען אַז 1 איז ווייניקער ווי 7, אַזוי מיר מאַך צו די לינקס.
מיר באַקומען צו די 3 און זען אַז 1 איז ווייניקער ווי 3, אַזוי ווידער מיר פּרובירן צו מאַך צו די לינקס.
אין דעם פונט מיר האָבן אַ נאַל נאָדע, אַזוי ווידער מיר קענען באַריכט דורכפאַל.
>> אויב איר טאָן ווילן צו לערנען מער וועגן ביינערי ביימער,
עס זענען אַ גאַנץ בינטל פון שפּאַס ביסל פּראָבלעמס אַז איר קענען טאָן מיט זיי.
איך פֿאָרשלאָגן פּראַקטיסינג די צייכענונג אויס פון די דייאַגראַמז איינער-דורך-איינער
און פאלגענדע דורך אַלע פון ​​די פאַרשידענע טריט,
ווייַל דאָס וועט קומען אין סופּער-האַנטיק
נישט נאָר ווען איר ניטאָ טאן די הופפמאַן קאָדירונג פּראָבלעם שטעלן
אָבער אויך אין צוקונפֿט קאָרסאַז -
נאָר וויסן ווי צו ציען אויס די דאַטן סטראַקטשערז און טראַכטן דורך די פראבלעמען
מיט פעדער און פּאַפּיר אָדער, אין דעם פאַל, יפּאַד און סטילוס.
>> אין דעם פונט כאָטש, מיר רע געגאנגען צו באַוועגן אויף צו טאָן עטלעכע קאָודינג פיר
און פאקטיש שפּילן מיט די ביינערי ביימער און זען.
איך בין געגאנגען צו באַשטימען צוריק איבער צו מיין קאָמפּיוטער.
פֿאַר דעם טייל פון די אָפּטיילונג, אַנשטאָט פון ניצן קס50 לויפן אָדער קס50 ספּייסאַז,
איך בין געגאנגען צו נוצן די אַפּפּליאַנסע.
>> ווייַטערדיק צוזאמען מיט די פּראָבלעם באַשטעטיק באַשרייַבונג,
איך זען אַז איך בין געמיינט צו עפענען זיך די אַפּפּליאַנסע,
גיין צו מיין דראָפּבאָקס טעקע, מאַכן אַ טעקע גערופן סעקשאַן 7,
און דאַן מאַכן אַ טעקע גערופן בינאַרי_טרעע.ק.
דאָ מיר גיין. איך ווע גאַט דער אַפּפּליאַנסע שוין עפענען.
איך בין געגאנגען ציען אַרויף אַ וואָקזאַל.
איך בין געגאנגען צו גיין צו די דראָפּבאָקס טעקע, מאַכן אַ וועגווייַזער גערופן סעקטיאָנ7,
און זען עס ס טאָוטאַלי ליידיק.
איצט איך בין געגאנגען צו עפענען אַרויף בינאַרי_טרעע.ק.
אָלרייט. דאָ מיר גיין - ליידיק טעקע.
>> זאל ס גיין צוריק צו די באַשרייַבונג.
די באַשרייַבונג פרעגט צו שאַפֿן אַ נייַ טיפּ דעפֿיניציע
פֿאַר אַ ביינערי בוים נאָדע מיט ינט וואַלועס -
פּונקט ווי די וואַלועס אַז מיר געצויגן אויס אין אונדזער דיאַגראַממינג פריער.
מיר רע געגאנגען צו נוצן דעם בוילערפּלייט טיפּעדעף אַז מיר ווע געטאן רעכט דאָ
אַז איר זאָל דערקענען פון פּראָבלעם באַשטעטיק 5 -
אויב איר האט די האַש טיש וועג פון קאַנגקערינג די ספּעלער פּראָגראַם.
איר זאָל אויך דערקענען עס פון לעצטע וואָך ס אָפּטיילונג
ווו מיר גערעדט וועגן לינגקט רשימות.
מיר ווע גאַט דעם טיפּעדעף פון אַ סטרוקט נאָדע,
און מיר ווע געגעבן דעם סטרוקט נאָדע דעם נאָמען פון סטרוקט נאָדע פארויס
אַזוי אַז מיר קענען דעריבער אָפּשיקן צו עס זינט מיר וועט ווילן צו האָבן סטרוקט נאָדע פּוינטערז
ווי טייל פון אונדזער סטרוקט, אָבער מיר 'ווע דעמאָלט ינסערקאַלד דעם -
אָדער אלא, ענקלאָוזד דעם - אין אַ טיפּעדעף
אַזוי אַז, שפּעטער אין די קאָד, מיר קענען אָפּשיקן צו דעם סטרוקט ווי נאָר אַ נאָדע אַנשטאָט פון אַ סטרוקט נאָדע.
>> דאס איז געגאנגען צו זייַן זייער ענלעך צו די יינציקווייַז-לינגקט רשימה דעפֿיניציע אַז מיר געזען לעצטע וואָך.
צו טאָן דאָס, לאָזן ס נאָר אָנהייב דורך שרייבן אויס די בוילערפּלייט.
מיר וויסן וואָס מיר האָבן צו האָבן אַ ינטעגער ווערט,
אַזוי מיר וועט שטעלן אין ינט ווערט, און דעריבער אַנשטאָט פון בעת ​​נאָר איין טייַטל צו דער ווייַטער עלעמענט -
ווי מיר האבן מיט יינציקווייַז-לינגקט רשימות -
מיר רע געגאנגען צו האָבן לינקס און רעכט קינד פּוינטערז.
אַז ס 'שיין פּשוט אויך - סטרוקט נאָדע * לינקס קינד;
און סטרוקט נאָדע * רעכט קינד;. קיל.
וואָס קוקט ווי אַ שיין גוט אָנהייב.
זאל ס גיין צוריק צו די באַשרייַבונג.
>> איצט מיר דאַרפֿן צו דערקלערן אַ גלאבאלע נאָדע * בייַטעוודיק פֿאַר דעם וואָרצל פון אַ בוים.
מיר רע געגאנגען צו מאַכן דעם גלאבאלע פּונקט ווי מיר געמאכט ערשטער טייַטל אין אונדזער לינגקט רשימה אויך גלאבאלע.
דאס איז געווען אַזוי אַז אין די פאַנגקשאַנז אַז מיר שרייַבן
מיר טאָן ניט האָבן צו האַלטן גייט פארביי אַרום דעם וואָרצל -
כאָטש מיר וועט זען אַז אויב איר טאָן ווילן צו שרייַבן די פאַנגקשאַנז רעקורסיוועלי,
עס זאל זייַן בעסער צו נישט אַפֿילו פאָרן עס אַרום ווי אַ גלאבאלע אין דער ערשטער אָרט
און אַנשטאָט ינישאַלייז עס לאָוקאַלי אין אייער הויפּט פֿונקציע.
אבער, מיר וועט טאָן עס גלאָובאַלי צו אָנהייבן.
ווידער, מיר וועט געבן אַ פּאָר פון ספּייסאַז, און איך בין געגאנגען צו דערקלערן אַ נאָדע * וואָרצל.
נאָר צו מאַכן זיכער אַז איך טאָן ניט לאָזן דעם וניניטיאַליזעד, איך בין געגאנגען צו שטעלן עס גלייַך צו נאַל.
איצט, אין די הויפּט פֿונקציע - וואָס מיר וועט שרייַבן טאַקע געשווינד רעכט דאָ -
ינט הויפּט (ינט אַרגק, קאָנסט טשאַר * אַרגוו []) -
און איך בין געגאנגען צו אָנהייבן דיקלערינג מיין אַרגוו מענגע ווי קאָנסט נאָר אַזוי אַז איך וויסן
אַז יענע טענות זענען טענות אַז איך מיסטאָמע טאָן נישט וועלן צו מאָדיפיצירן.
אויב איך ווילן צו מאָדיפיצירן זיי איך זאָל מיסטאָמע זייַן געמאכט קאפיעס פון זיי.
איר וועט זען דעם אַ פּלאַץ אין קאָד.
עס ס פייַן אָדער וועג. עס ס פייַן צו לאָזן עס ווי - האָפּקען די קאָנסט אויב איר 'ד ווי.
איך טיפּיקלי שטעלן עס אין נאָר אַזוי אַז איך דערמאָנען זיך
אַז איך מיסטאָמע טאָן נישט וועלן צו מאָדיפיצירן יענע טענות.
>> ווי שטענדיק, איך בין געגאנגען צו אַרייַננעמען דעם צוריקקומען 0 שורה אין די סוף פון הויפּט.
דאָ, איך וועט ינישאַלייז מיין וואָרצל נאָדע.
ווי עס שטייט רעכט איצט, איך ווע גאַט אַ טייַטל אַז ס שטעלן צו נאַל,
אַזוי עס ס פּוינטינג בייַ גאָרנישט.
אין סדר צו פאקטיש אָנהייב בנין די נאָדע,
איך ערשטער דאַרפֿן צו אַלאַקייט זכּרון פֿאַר עס.
איך בין געגאנגען צו טאָן אַז דורך מאכן זכּרון אויף די קופּע ניצן מאַללאָק.
איך בין געגאנגען צו שטעלן וואָרצל גלייַך צו דער רעזולטאַט פון מאַללאָק,
און איך בין געגאנגען צו נוצן די סיזעאָף אָפּעראַטאָר צו רעכענען די גרייס פון אַ נאָדע.
די סיבה וואָס איך נוצן סיזעאָף נאָדע ווי קעגן צו, זאָגן,
טאן עפּעס ווי דעם - מאַללאָק (4 + 4 +4) אָדער מאַללאָק 12 -
איז ווייַל איך ווילן מיין קאָד צו זייַן ווי קאַמפּאַטאַבאַל ווי מעגלעך.
איך ווילן צו זייַן ביכולת צו נעמען דעם. C טעקע, צונויפנעמען עס אויף די אַפּפּליאַנסע,
און דעמאָלט צונויפנעמען עס אויף מיין 64-ביסל מעק -
אָדער אויף אַ גאָר אַנדערש אַרקאַטעקטשער -
און איך ווילן דאָס אַלע צו אַרבעטן די זעלבע.
>> אויב איך בין מאכן אַסאַמפּשאַנז וועגן די גרייס פון וועריאַבאַלז -
די גרייס פון אַ ינט אָדער די גרייס פון אַ טייַטל -
דעמאָלט איך בין אויך מאכן אַסאַמפּשאַנז וועגן די מינים פון אַרקאַטעקטשערז
אויף וואָס מיין קאָד קענען הצלחה צונויפנעמען ווען לויפן.
שטענדיק נוצן סיזעאָף ווי קעגן צו מאַניואַלי סאַמינג די סטרוקט פעלדער.
די אנדערע סיבה איז אַז עס זאל אויך זייַן וואַטן אַז דער קאַמפּיילער לייגט אין די סטרוקט.
אפילו נאָר סאַמינג דער יחיד פעלדער איז נישט עפּעס וואָס איר טיפּיקלי ווילן צו טאָן,
אַזוי, ויסמעקן אַז שורה.
איצט, צו טאַקע ינישאַלייז דעם וואָרצל נאָדע,
איך בין געגאנגען צו האָבן צו צאַפּן אין וואַלועס פֿאַר יעדער פון זייַן פאַרשידענע פעלדער.
פֿאַר בייַשפּיל, פֿאַר ווערט איך וויסן איך ווילן צו ינישאַלייז צו 7,
און פֿאַר איצט איך בין געגאנגען צו שטעלן די לינקס קינד צו זייַן נאַל
און די רעכט קינד צו אויך זייַן נאַל. גרויס!
מיר ווע געטאן אַז טייל פון די ספּעק.
>> די באַשרייַבונג אַראָפּ בייַ די דנאָ פון Page 3 פרעגט מיך צו מאַכן דרייַ מער נאָודז -
איינער מיט 3, איינער מיט 6, און איינער מיט 9 -
און דעמאָלט דראָט זיי אַרויף אַזוי עס קוקט פּונקט ווי אונדזער בוים דיאַגראַמע
אַז מיר האבן גערעדט וועגן פריער.
זאל ס טאָן אַז שיין געשווינד דאָ.
איר וועט זען טאַקע געשווינד אַז איך בין געגאנגען צו אָנהייבן שרייבן אַ בינטל פון דופּליקאַט קאָד.
איך בין געגאנגען צו שאַפֿן אַ נאָדע * און איך בין געגאנגען צו רופן עס דרייַ.
איך בין געגאנגען צו שטעלן עס גלייַך צו מאַללאָק (סיזעאָף (נאָדע)).
איך בין געגאנגען צו שטעלן דרייַ-> ווערט = 3.
דרייַ -> לעפט_טשילד = נאַל; דרייַ -> רעכט _טשילד = נאַל; ווי געזונט.
וואָס קוקט שיין ענלעך צו יניטיאַליזינג די וואָרצל, און אַז ס פּונקט וואָס
איך בין געגאנגען צו האָבן צו טאָן אויב איך אָנהייבן יניטיאַליזינג 6 און 9 ווי געזונט.
איך וועט טאָן אַז טאַקע געשווינד דאָ - פאקטיש, איך בין געגאנגען צו טאָן אַ ביסל קאָפּיע און פּאַפּ,
און מאַכן זיכער אַז איך - אָלרייט.
איצט, איך ווע גאַט עס קאַפּיד און איך קענען גיין פאָרויס און שטעלן דאָס גלייַך צו 6.
איר קענען זען אַז דאָס נעמט ווייַלע און איז נישט סופּער-עפעקטיוו.
אין נאָר אַ קליין ביסל, מיר וועט שרייַבן אַ פֿונקציע וואָס וועט טאָן דעם פֿאַר אונדז.
איך ווילן צו פאַרבייַטן דעם מיט אַ 9, פאַרבייַטן אַז מיט אַ 6.
>> איצט מיר ווע גאַט אַלע פון ​​אונדזער נאָודז באשאפן און ינישאַלייזד.
מיר ווע גאַט אונדזער וואָרצל שטעלן גלייַך צו 7, אָדער מיט די ווערט 7,
אונדזער נאָדע מיט 3, אונדזער נאָדע מיט 6, און אונדזער נאָדע מיט 9.
אין דעם פונט, אַלע מיר האָבן צו טאָן איז דראָט אַלץ אַרויף.
די סיבה איך ינישאַלייזד אַלע די פּוינטערז צו נאַל איז פּונקט אַזוי אַז איך מאַכן זיכער אַז
איך טאָן ניט האָבן קיין וניניטיאַליזעד פּוינטערז אין עס דורך צופאַל.
און אויך זינט, בייַ דעם פונט, איך נאָר האָבן צו פאקטיש פאַרבינדן די נאָודז צו יעדער אנדערע -
צו די אָנעס אַז זיי ניטאָ פאקטיש פארבונדן צו - איך טאָן ניט האָבן צו גיין דורך און מאַכן
זיכער אַז אַלע די נוללס זענען אין דאָרט אין די צונעמען ערטער.
>> סטאַרטינג בייַ די וואָרצל, איך וויסן וואָס די וואָרצל ס לינקס קינד איז 3.
איך וויסן וואָס די וואָרצל ס רעכט קינד איז 9.
נאָך וואָס, דער נאָר אנדערע קינד וואָס איך האָבן לינקס צו זאָרג וועגן
איז 3 ס רעכט קינד, וואָס איז 6.
אין דעם פונט, עס אַלע קוקט שיין גוט.
מיר וועט אויסמעקן עטלעכע פון ​​די שורות.
איצט אַלץ קוקט שיין גוט.
זאל ס גיין צוריק צו אונדזער באַשרייַבונג און זען וואָס מיר האָבן צו טאָן ווייַטער.
>> אין דעם פונט, מיר האָבן צו שרייַבן אַ פֿונקציע גערופן 'כּולל'
מיט אַ פּראָוטאַטייפּ פון 'באָאָל כּולל (ינט ווערט)'.
און דעם כּולל פֿונקציע איז געגאנגען צו צוריקקומען אמת
אויב דער בוים שפּיציק צו דורך אונדזער גלאבאלע וואָרצל בייַטעוודיק
כּולל די ווערט דורכגעגאנגען אין די פֿונקציע און פאַלש אַנדערש.
זאל ס גיין פאָרויס און טאָן וואָס.
דאס איז געגאנגען צו זייַן פּונקט ווי די לאָאָקופּ אַז מיר האבן דורך האַנט אויף די יפּאַד נאָר אַ קליין ביסל צוריק.
זאל ס פארגרעסער צוריק אין אַ קליין ביסל און מעגילע אַרויף.
מיר רע געגאנגען צו שטעלן דעם פֿונקציע רעכט אויבן אונדזער הויפּט פֿונקציע
אַזוי אַז מיר טאָן ניט האָבן צו טאָן קיין סאָרט פון פּראָטאָטיפּינג.
אַזוי, באָאָל כּולל (ינט ווערט).
עס מיר גיין. עס ס אונדזער בוילערפּלייט דערקלערונג.
נאָר צו מאַכן זיכער אַז דאָס וועט צונויפנעמען,
איך בין געגאנגען צו גיין פאָרויס און נאָר שטעלן עס גלייַך צו צוריקקומען פאַלש.
רעכט איצט דעם פונקציאָנירן נאָר וועט ניט טאָן עפּעס און שטענדיק באַריכט אַז
די ווערט אַז מיר רע קוקן פֿאַר איז נישט אין די בוים.
>> אין דעם פונט, עס ס מיסטאָמע אַ גוט געדאַנק -
זינט מיר ווע געשריבן אַ גאַנץ בינטל פון קאָד און מיר האָבן ניט אַפֿילו געפרוווט טעסטינג עס נאָך -
צו מאַכן זיכער אַז עס אַלע קאַמפּיילז.
עס זענען אַ פּאָר פון זאכן וואָס מיר האָבן צו טאָן צו מאַכן זיכער אַז דאָס וועט פאקטיש צונויפנעמען.
ערשטער, זען אויב מיר 'ווע שוין ניצן קיין פאַנגקשאַנז אין קיין לייברעריז אַז מיר האָבן נישט נאָך אַרייַנגערעכנט.
די פאַנגקשאַנז מיר ווע געניצט אַזוי ווייַט זענען מאַללאָק,
און דעמאָלט מיר ווע אויך שוין ניצן דעם טיפּ - דעם נאַנסטאַנדערד טיפּ גערופן 'באָאָל' -
וואָס איז אַרייַנגערעכנט אין די נאָרמאַל באָאָל כעדער טעקע.
מיר באשטימט ווילן צו אַרייַננעמען נאָרמאַל באָאָל.ה פֿאַר די באָאָל טיפּ,
און מיר אויך ווילן צו # אַרייַננעמען נאָרמאַל ליב.ה פֿאַר דעם נאָרמאַל לייברעריז
אַז אַרייַננעמען מאַללאָק, און פֿרייַ, און אַלע פון ​​וואָס.
אַזוי, פארגרעסער אויס, מיר רע געגאנגען צו פאַרלאָזן.
זאל ס פּרובירן און מאַכן זיכער אַז דאָס פאקטיש האט צונויפנעמען.
מיר זען וואָס עס טוט, אַזוי מיר ניטאָ אויף דער רעכט שפּור.
>> זאל ס עפענען אַרויף בינאַרי_טרעע.ק ווידער.
עס קאַמפּיילז. זאל ס גיין אַראָפּ און מאַכן זיכער אַז מיר אַרייַנלייגן עטלעכע רופט צו אונדזער כּולל פֿונקציע -
נאָר צו מאַכן זיכער אַז אַז ס אַלע געזונט און גוט.
פֿאַר בייַשפּיל, ווען מיר האבן עטלעכע לוקאַפּס אין אונדזער בוים פריער,
מיר געפרוווט צו קוקן אַרויף די וואַלועס 6, 10, און 1, און מיר געוואוסט אַז 6 איז געווען אין די בוים,
10 איז געווען נישט אין די בוים, און 1 איז נישט אין די בוים אָדער.
זאל ס נוצן יענע מוסטער רופט ווי אַ וועג צו רעכענען אויס צי אָדער נישט
אונדזער כּולל פֿונקציע איז ארבעטן.
אין סדר צו טאָן וואָס, איך בין געגאנגען צו נוצן די פּרינטף פונקציאָנירן,
און מיר רע געגאנגען צו דרוקן אויס דער רעזולטאַט פון די רופן צו כּולל.
איך בין געגאנגען צו שטעלן אין אַ שטריקל "כּולל (% ד) = ווייַל
מיר רע געגאנגען צו צאַפּן אין די ווערט אַז מיר רע געגאנגען צו קוקן פֿאַר,
און =% s \ n "און נוצן אַז ווי אונדזער פֿאָרמאַט שטריקל.
מיר רע נאָר געגאנגען צו זען - ממש דרוקן אויס אויף דער עקראַן -
וואָס קוקט ווי אַ פֿונקציע רופן.
דאס איז נישט פאקטיש די פֿונקציע רופן.
דאס איז נאָר אַ שטריקל דיזיינד צו קוקן ווי אַ פֿונקציע רופן.
>> איצט, מיר רע געגאנגען צו צאַפּן אין די וואַלועס.
מיר רע געגאנגען צו פּרובירן כּולל אויף 6,
און דעמאָלט וואָס מיר רע געגאנגען צו טאָן דאָ איז נוצן אַז טערנאַרי אָפּעראַטאָר.
זאל ס זען - כּולל 6 - אַזוי, איצט איך ווע קאַנטיינד 6 און אויב כּולל 6 איז אמת,
די שטריקל וואָס מיר רע געגאנגען צו שיקן צו דער% s פֿאָרמאַט כאַראַקטער
איז געגאנגען צו זייַן די שטריקל "אמת".
זאל ס מעגילע איבער אַ קליין ביסל.
אַנדערש, מיר ווילן צו שיקן די שטריקל "פאַלש" אויב כּולל 6 קערט פאַלש.
דאס איז אַ ביסל גופי-קוקן, אָבער איך פיגורע איך זאל ווי געזונט אילוסטרירן
וואָס די טערנאַרי אָפּעראַטאָר קוקט ווי זינט מיר האָבן נישט געזען עס פֿאַר ווייַלע.
דאס וועט זייַן אַ פייַן, האַנטיק וועג צו רעכענען אויס אויב אונדזער כּולל פֿונקציע איז ארבעטן.
איך בין געגאנגען צו מעגילע צוריק איבער צו די לינקס,
און איך בין געגאנגען צו צייכענען און פּאַפּ דעם שורה אַ ביסל מאל.
עס געביטן עטלעכע פון ​​די וואַלועס אַרום,
אַזוי דעם איז געגאנגען צו זייַן 1, און דאָס איז געגאנגען צו זייַן 10.
>> אין דעם פונט מיר ווע גאַט אַ פייַן כּולל פונקציאָנירן.
מיר ווע גאַט עטלעכע טעסץ, און מיר וועט זען אויב דאָס אַלע מעשים.
אין דעם פונט מיר ווע געשריבן עטלעכע מער קאָד.
צייט צו פאַרלאָזן אויס און מאַכן זיכער אַז אַלץ נאָך קאַמפּיילז.
פאַרלאָזן אויס, און איצט לאָזן ס פּרובירן מאכן ביינערי בוים ווידער.
גוט, עס קוקט ווי מיר ווע גאַט אַ טעות,
און מיר ווע גאַט דעם בפירוש דיקלערינג די ביבליאָטעק פונקציאָנירן פּרינטף.
עס קוקט ווי מיר דאַרפֿן צו גיין אין און # אַרייַננעמען סטאַנדאַרדיאָ.ה.
און מיט וואָס, אַלץ זאָל צונויפנעמען. מיר רע אַלע גוט.
איצט לאָזן ס פּרובירן פליסנדיק ביינערי בוים און זען וואָס כאַפּאַנז.
דאָ מיר זענען,. / בינאַרי_טרעע,
און מיר זען אַז, ווי מיר דערוואַרט -
ווייַל מיר האָבן נישט ימפּלאַמענטאַד כּולל נאָך,
אָדער אלא, מיר ווע נאָר שטעלן אין צוריקקומען פאַלש -
מיר זען אַז עס ס נאָר אומגעקערט פאַלש פֿאַר אַלע פון ​​זיי,
אַזוי אַז ס אַלע ארבעטן פֿאַר די רובֿ טייל פערלי געזונט.
>> זאל ס גיין צוריק אין און פאקטיש מאַכשער כּולל אין דעם פונט.
איך בין געגאנגען צו מעגילע אַראָפּ, פארגרעסער אין, און -
געדענקען, דער אַלגערידאַם אַז מיר געניצט איז געווען אַז מיר אנגעהויבן בייַ די וואָרצל נאָדע
און דעמאָלט בייַ יעדער נאָדע אַז מיר טרעפן, מיר טאָן אַ פאַרגלייַך,
און באזירט אויף אַז פאַרגלייַך מיר אָדער מאַך צו די לינקס קינד אָדער צו די רעכט קינד.
דאס איז געגאנגען צו קוקן זייער ענלעך צו די ביינערי זוכן קאָד וואָס מיר געשריבן פריער אין דעם טערמין.
ווען מיר אָנהייבן אַוועק, מיר וויסן אַז מיר ווילן צו האַלטן אויף צו די קראַנט נאָדע
אַז מיר רע קוקן בייַ, און די קראַנט נאָדע איז געגאנגען צו זייַן ינישאַלייזד צו דער וואָרצל נאָדע.
און איצט, מיר רע געגאנגען צו האַלטן געגאנגען דורך דעם בוים,
און געדענקען אַז אונדזער סטאָפּפּינג צושטאַנד -
ווען מיר פאקטיש געארבעט דורך דעם בייַשפּיל דורך האַנט -
איז געווען ווען מיר געפּלאָנטערט אַ נאַל נאָדע,
ניט ווען מיר געקוקט אין אַ נאַל קינד,
אָבער אלא ווען מיר פאקטיש אריבערגעפארן צו אַ נאָדע אין דער בוים
און געפונען אַז מיר ניטאָ בייַ אַ נאַל נאָדע.
מיר רע געגאנגען צו יטעראַטע ביז קער איז ניט גלייַך צו נאַל.
און וואָס זענען מיר געגאנגען צו טאָן?
מיר רע געגאנגען צו פּרובירן אויב (קער -> ווערט == ווערט),
דעמאָלט מיר וויסן אַז מיר ווע פאקטיש געפונען די נאָדע אַז מיר רע קוקן פֿאַר.
אַזוי דאָ, מיר קענען צוריקקומען אמת.
אַנדערש, מיר ווילן צו זען צי אָדער ניט די ווערט איז ווייניקער ווי די ווערט.
אויב די קראַנט נאָדע ס ווערט איז ווייניקער ווי דער ווערט מיר רע קוקן פֿאַר,
מיר רע געגאנגען צו מאַך צו די רעכט.
אַזוי, קער = קער -> ריגהט_טשילד; און אַנדערש, מיר רע געגאנגען צו מאַך צו די לינקס.
קער = קער -> לעפט_טשילד;. שיין פּשוט.
>> איר מיסטאָמע דערקענען די שלייף וואָס קוקט זייער ענלעך צו דעם פון
ביינערי זוכן פריער אין דער טערמין, חוץ דעמאָלט מיר זענען דילינג מיט נידעריק, מיטן, און הויך.
דאָ, מיר נאָר האָבן צו קוקן בייַ אַ קראַנט ווערט,
אַזוי עס ס פייַן און פּשוט.
זאל ס מאַכן זיכער דעם קאָד איז ארבעטן.
ערשטער, מאַכן זיכער עס קאַמפּיילז. קוקט ווי עס טוט.
זאל ס פּרובירן פליסנדיק עס.
און טאַקע, עס פּרינץ אויס אַלץ וואָס מיר דערוואַרט.
עס געפינט 6 אין די בוים, טוט ניט געפֿינען 10 ווייַל 10 ס נישט אין די בוים,
און טוט נישט געפֿינען 1 אָדער ווייַל 1 ס אויך ניט אין דעם בוים.
קיל שטאָפּן.
>> אָלרייט. זאל ס גיין צוריק צו אונדזער באַשרייַבונג און זען וואָס ס ווייַטער.
איצט, עס וויל צו לייגן עטלעכע מער נאָודז צו אונדזער בוים.
עס וויל צו לייגן 5, 2, און 8, און מאַכן זיכער אַז אונדזער כּולל קאָד
נאָך אַרבעט ווי דערוואַרט.
זאל ס גיין טאָן אַז.
אין דעם פונט, אלא ווי טאן אַז אַנויינג קאָפּיע און פּאַפּ ווידער,
לאָזן ס שרייַבן אַ פֿונקציע צו פאקטיש שאַפֿן אַ נאָדע.
אויב מיר מעגילע אַראָפּ אַלע די וועג צו הויפּט, מיר זען וואָס מיר ווע שוין טאן דעם
זייער ענלעך קאָד איבער און איבער ווידער יעדער מאָל וואָס מיר ווילן צו שאַפֿן אַ נאָדע.
>> זאל ס שרייַבן אַ פֿונקציע וואָס וועט פאקטיש בויען אַ נאָדע פֿאַר אונדז און צוריקקומען עס.
איך בין געגאנגען צו רופן עס בוילד_נאָדע.
איך בין געגאנגען צו בויען אַ נאָדע מיט אַ באַזונדער ווערט.
פארגרעסער אין דאָ.
דער ערשטער זאַך איך בין געגאנגען צו טאָן איז פאקטיש מאַכן פּלאַץ פֿאַר די נאָדע אויף די קופּע.
אַזוי, נאָדע * N = מאַללאָק (סיזעאָף (נאָדע)); N -> ווערט = ווערט;
און דעריבער דאָ, איך בין נאָר געגאנגען צו ינישאַלייז אַלע פון ​​די פעלדער צו זייַן צונעמען וואַלועס.
און בייַ די זייער סוף, מיר וועט צוריקקומען אונדזער נאָדע.
אָלרייט. איין זאַך צו טאָן איז אַז דאָס פונקציאָנירן רעכט דאָ
איז געגאנגען צו צוריקקומען אַ טייַטל צו זכּרון וואָס האט שוין קופּע-אַלאַקייטיד.
וואָס ס פייַן וועגן דעם איז אַז דעם נאָדע איצט -
מיר האָבן צו דערקלערן עס אויף די קופּע ווייַל אויב מיר דערקלערט עס אויף די אָנלייגן
מיר וואָלט ניט זייַן ביכולת צו טאָן עס אין דעם פונקציאָנירן ווי דעם.
אַז זכּרון וואָלט גיין אויס פון פאַרנעם
און וואָלט זייַן פאַרקריפּלט אויב מיר געפרוווט צו צוטריט עס שפּעטער אויף.
זינט מיר זענען דיקלערינג קופּע-אַלאַקייטיד זכּרון,
מיר זענען געגאנגען צו האָבן צו נעמען קעיר פון פריינג עס שפּעטער
פֿאַר אונדזער פּראָגראַם צו נישט רינען קיין זכּרון.
מיר ווע שוין פּונטינג אויף וואָס פֿאַר אַלץ אַנדערש אין די קאָד
נאָר פֿאַר פּאַשטעס ס צוליב אין דער צייַט,
אָבער אויב איר אלץ שרייַבן אַ פֿונקציע וואָס קוקט ווי דעם
ווו איר ווע גאַט - עטלעכע רופן עס אַ מאַללאָק אָדער רעאַללאָק ין -
איר ווילן צו מאַכן זיכער אַז איר שטעלן עטלעכע סאָרט פון באַמערקונג אַרויף דאָ וואָס זאגט,
היי, איר וויסן, קערט אַ קופּע-אַלאַקייטיד נאָדע ינישאַלייזד מיט די דורכגעגאנגען-אין ווערט.
און דאַן איר ווילן צו מאַכן זיכער אַז איר שטעלן אין עטלעכע סאָרט פון טאָן וואָס זאגט
די קאָלער מוזן פֿרייַ די אומגעקערט זכּרון.
אַז וועג, אויב עמעצער אלץ גייט און ניצט וואָס פונקציאָנירן,
זיי וויסן אַז וועלכער זיי באַקומען צוריק פון וואָס פונקציאָנירן
בייַ עטלעכע פונט וועט דאַרפֿן צו זייַן באפרייט.
>> אַסומינג אַז אַלע איז געזונט און גוט דאָ,
מיר קענען גיין אַראָפּ אין אונדזער קאָד און פאַרבייַטן אַלע פון ​​די שורות רעכט דאָ
מיט רופט צו אונדזער בויען נאָדע פונקציאָנירן.
זאל ס טאָן אַז טאַקע געשווינד.
די איין טייל וואָס מיר ניטאָ ניט געגאנגען צו פאַרבייַטן איז דעם טייל אַראָפּ דאָ
בייַ די דנאָ ווו מיר פאקטיש דראָט אַרויף די נאָודז צו פונט צו יעדער אַנדערער,
ווייַל אַז מיר קענען נישט טאָן אין אונדזער פונקציאָנירן.
אבער, לאָזן ס טאָן וואָרצל = בוילד_נאָדע (7); נאָדע * דרייַ = בוילד_נאָדע (3);
נאָדע * זעקס = בוילד_נאָדע (6); נאָדע * נייַן = בוילד_נאָדע (9);.
און איצט, מיר אויך געוואלט צו לייגן נאָודז פֿאַר -
נאָדע * פינף = בוילד_נאָדע (5); נאָדע * אַכט = בוילד_נאָדע (8);
און וואָס איז געווען די אנדערע נאָדע? זאל ס זען דאָ. מיר געוואלט צו אויך לייגן אַ 2 -
נאָדע * צוויי = בוילד_נאָדע (2);.
אָלרייט. אין דעם פונט, מיר וויסן אַז מיר ווע גאַט די 7, דעם 3, דעם 9, און דעם 6
אַלע ווייערד אַרויף אַפּראָופּרייטלי, אָבער וואָס וועגן די 5, די 8, און די 2?
צו האַלטן אַלץ אין די צונעמען סדר,
מיר וויסן אַז דרייַ ס רעכט קינד איז 6.
אַזוי, אויב מיר רע געגאנגען צו לייגן די 5,
די 5 אויך געהערט אין די רעכט זייַט פון די בוים פון וואָס 3 איז דער וואָרצל,
אַזוי 5 געהערט ווי די לינקס קינד פון 6.
מיר קענען טאָן דאָס דורך זאגן, זעקס -> לעפט_טשילד = פינף;
און דעריבער די 8 געהערט ווי די לינקס קינד פון 9, אַזוי נייַן -> לעפט_טשילד = אַכט;
און דעמאָלט 2 איז די לינקס קינד פון 3, אַזוי מיר קענען טאָן וואָס אַרויף דאָ - דיר -> לעפט_טשילד = צוויי;.
אויב איר האט ניט גאַנץ נאָכגיין צוזאמען מיט וואָס, איך פֿאָרשלאָגן איר ציען עס אויס זיך.
>> אָלרייט. זאל ס ראַטעווען דעם. זאל ס גיין אויס און מאַכן זיכער עס קאַמפּיילז,
און דעמאָלט מיר קענען לייגן אין אונדזער כּולל רופט.
קוקט ווי אַלץ נאָך קאַמפּיילז.
זאל ס גיין אין און לייגן אין עטלעכע כּולל רופט.
ווידער, איך בין געגאנגען צו טאָן אַ קליין ביסל פון נאָכמאַכן און פּאַפּ.
איצט לאָזן ס זוכן פֿאַר 5, 8, און 2. אָלרייט.
זאל ס מאַכן זיכער אַז דאָס אַלע קוקט גוט נאָך. גרויס! היט און פאַרלאָזן.
איצט לאָזן ס מאַכן, צונויפנעמען, און איצט לאָזן ס לויפן.
פון די רעזולטאַטן, עס קוקט ווי אַלץ איז ארבעטן נאָר פייַן און געזונט.
גרויס! אַזוי איצט מיר ווע גאַט אונדזער כּולל פונקציאָנירן געשריבן.
זאל ס 'מאַך אויף, און אָנהייבן ארבעטן אויף ווי צו אַרייַנלייגן נאָודז אין דער בוים
זינט, ווי מיר רע טאן עס רעכט איצט, דאס זענען נישט זייער שיין.
>> אויב מיר גיין צוריק צו די באַשרייַבונג,
עס פרעגט אונדז צו שרייַבן אַ פֿונקציע גערופן אַרייַנלייגן - ווידער, אומגעקערט אַ באָאָל
פֿאַר צי אָדער נישט מיר קען פאקטיש אַרייַנלייגן די נאָדע אין דעם בוים -
און דאַן די ווערט צו אַרייַנלייגן אין דער בוים איז ספּעסאַפייד ווי
דער בלויז אַרגומענט צו אונדזער אַרייַנלייגן פונקציאָנירן.
מיר וועלן צוריקקומען אמת אויב מיר קען טאַקע אַרייַנלייגן די נאָדע מיט ווערט אין דער בוים,
וואָס מיטל אַז מיר, איינער, האט גענוג זכּרון,
און דעמאָלט צוויי, אַז נאָדע האט נישט שוין עקסיסטירן אין די בוים זינט -
געדענקען, מיר זענען נישט געגאנגען צו האָבן דופּליקאַט וואַלועס אין דעם בוים, נאָר צו מאַכן דאס פּשוט.
אָלרייט. צוריק צו דער קאָד.
עפֿן עס אַרויף. פארגרעסער אין אַ ביסל, דעמאָלט מעגילע אַראָפּ.
זאל ס שטעלן די אַרייַנלייגן פונקציאָנירן רעכט אויבן די כּולל.
ווידער, עס ס געגאנגען צו זייַן גערופן באָאָל אַרייַנלייגן (ינט ווערט).
געבן אים אַ ביסל מער פּלאַץ, און דאַן, ווי אַ פעליקייַט,
לאָזן ס שטעלן אין צוריקקומען פאַלש בייַ די זייער סוף.
איצט אַראָפּ בייַ די דנאָ, לאָזן ס גיין פאָרויס און אַנשטאָט פון מאַניואַלי בנין די נאָודז
אין הויפּט זיך און וויירינג זיי אַרויף צו פונט צו יעדער אַנדערער ווי מיר רע טאן,
מיר וועט פאַרלאָזנ אויף אונדזער אַרייַנלייגן פונקציאָנירן צו טאָן וואָס.
מיר וועלן נישט פאַרלאָזנ אויף אונדזער אַרייַנלייגן פונקציאָנירן צו בויען די גאנצע בוים פון קראַצן נאָר נאָך,
אָבער אלא מיר וועט באַקומען באַפרייַען פון די שורות - וויל באַמערקונג אויס די שורות -
אַז בויען די נאָודז 5, 8, און 2.
און אַנשטאָט, מיר וועט אַרייַנלייגן רופט צו אונדזער אַרייַנלייגן פֿונקציע
צו מאַכן זיכער אַז אַז פאקטיש אַרבעט.
דאָ מיר גיין.
>> איצט מיר ווע קאַמענטאַד אויס די שורות.
מיר נאָר האָבן 7, 3, 9, און 6 אין אונדזער בוים אין דעם פונט.
צו מאַכן זיכער אַז דאָס איז אַלע ארבעטן,
מיר קענען פארגרעסער אויס, מאַכן אונדזער ביינערי בוים,
לויפן אים, און מיר קענען זען אַז כּולל איז איצט טעלינג אונדז אַז מיר רע טאָוטאַלי רעכט -
5, 8, און 2 זענען נישט מער אין דעם בוים.
גיין צוריק אין די קאָד,
און ווי זענען מיר געגאנגען צו אַרייַנלייגן?
געדענקען וואָס מיר האבן ווען מיר זענען פאקטיש ינסערטינג 5, 8, און 2 פריער.
מיר געשפילט אַז פּלינקאָ שפּיל ווו מיר אנגעהויבן בייַ די וואָרצל,
געגאנגען אַראָפּ די בוים איינער דורך איינער דורך איינער
ביז מיר געפונען די צונעמען ריס,
און דעמאָלט מיר ווייערד אין די נאָדע בייַ די צונעמען אָרט.
מיר רע געגאנגען צו טאָן די זעלבע זאַך.
דאס איז בייסיקלי ווי שרייבן די קאָד וואָס מיר געניצט אין דעם כּולל פֿונקציע
צו געפֿינען דעם אָרט ווו די נאָדע זאָל זייַן,
און דעמאָלט מיר רע נאָר געגאנגען צו אַרייַנלייגן די נאָדע רעכט דאָרט.
זאל ס אָנהייבן טאן אַז.
>> אַזוי מיר האָבן אַ נאָדע * קער = וואָרצל; מיר רע נאָר געגאנגען צו נאָכפאָלגן די כּולל קאָד
ביז מיר געפֿינען אַז עס טוט נישט גאַנץ אַרבעט פֿאַר אונדז.
מיר רע געגאנגען צו גיין דורך דעם בוים בשעת די קראַנט עלעמענט איז נישט נאַל,
און אויב מיר געפֿינען אַז קער ס ווערט איז גלייַך צו דעם ווערט אַז מיר רע טריינג צו אַרייַנלייגן -
נו, דאָס איז איינער פון די קאַסעס אין וועלכע מיר קען נישט פאקטיש אַרייַנלייגן די נאָדע
אין דער בוים ווייַל דעם מיטל מיר האָבן אַ דופּליקאַט ווערט.
דאָ מיר רע פאקטיש געגאנגען צו צוריקקומען פאַלש.
איצט, אַנדערש אויב קער ס ווערט איז ווייניקער ווי ווערט,
איצט מיר וויסן אַז מיר מאַך צו די רעכט
ווייַל די ווערט געהערט אין די רעכט האַלב פון די קער בוים.
אַנדערש, מיר רע געגאנגען צו מאַך צו די לינקס.
אַז ס בייסיקלי אונדזער כּולל פונקציאָנירן רעכט דאָרט.
>> אין דעם פונט, אַמאָל מיר ווע געענדיקט דעם בשעת שלייף,
אונדזער קער טייַטל איז געגאנגען צו זייַן פּוינטינג צו נאַל
אויב דער פֿונקציע האט נישט שוין אומגעקערט.
מיר רע דעריבער בעת קער אין דער אָרט ווו מיר ווילן צו אַרייַנלייגן די נייַ נאָדע.
וואָס בלייבט צו ווערן געטאן איז צו פאקטיש בויען די נייַ נאָדע,
וואָס מיר קענען טאָן שיין לייכט.
מיר קענען נוצן אונדזער סופּער-האַנטיק בויען נאָדע פונקציאָנירן,
און עפּעס אַז מיר האבן ניט טאָן פריער -
מיר נאָר מין פון גענומען פֿאַר געגעבן אָבער איצט מיר וועט טאָן נאָר צו מאַכן זיכער -
מיר וועט פּרובירן צו מאַכן זיכער אַז די ווערט אומגעקערט דורך נייַ נאָדע איז פאקטיש
ניט נאַל, ווייַל מיר טאָן נישט וועלן צו אָנהייבן אַקסעסינג אַז זכּרון אויב עס איז נאַל.
מיר קענען פּרובירן צו מאַכן זיכער אַז נייַ נאָדע איז ניט גלייַך צו נאַל.
אָדער אַנשטאָט, מיר קענען נאָר זען אויב עס פאקטיש איז נאַל,
און אויב עס איז נאַל, דעמאָלט מיר קענען נאָר צוריקקומען פאַלש פרי.
>> אין דעם פונט, מיר האָבן צו דראָט נייַ נאָדע אין זייַן צונעמען אָרט אין דעם בוים.
אויב מיר קוקן צוריק אין הויפּט און ווו מיר זענען פאקטיש וויירינג אין וואַלועס פריער,
מיר זען אַז דער וועג מיר זענען טאן עס ווען מיר געוואלט צו לייגן 3 אין דער בוים
איז מיר געליינט די לינקס קינד פון וואָרצל.
ווען מיר שטעלן 9 אין די בוים, מיר האט צו צוטריט די רעכט קינד פון דער וואָרצל.
מיר האט צו האָבן אַ טייַטל צו דער פאָטער אין סדר צו לייגן אַ נייַ ווערט אין דער בוים.
סקראָללינג צוריק אַרויף צו אַרייַנלייגן, אַז ס 'נישט געגאנגען צו גאַנץ אַרבעט דאָ
ווייַל מיר טאָן ניט האָבן אַ פאָטער טייַטל.
וואָס מיר ווילן צו זייַן ביכולת צו טאָן איז, בייַ דעם פונט,
טשעק דער פאָטער 'ס ווערט און זען - געזונט, גאַש,
אויב דער פאָטער 'ס ווערט איז ווייניקער ווי די קראַנט ווערט,
דעמאָלט דער פאָטער 'ס רעכט קינד זאָל זייַן די נייַ נאָדע;
אַנדערש, דער פאָטער 'ס לינקס קינד זאָל זייַן די נייַ נאָדע.
אבער, מיר טאָן ניט האָבן דעם פאָטער טייַטל גאַנץ נאָך.
>> אין סדר צו באַקומען עס, מיר רע פאקטיש געגאנגען צו האָבן צו שפּור עס ווי מיר גיין דורך דעם בוים
און געפֿינען די צונעמען אָרט אין אונדזער שלייף אויבן.
מיר קענען טאָן אַז דורך סקראָללינג צוריק אַרויף צו די שפּיץ פון אונדזער אַרייַנלייגן פֿונקציע
און טראַקינג אנדערן טייַטל בייַטעוודיק גערופן די פאָטער.
מיר רע געגאנגען צו שטעלן עס גלייַך צו נאַל טכילעס,
און דעריבער יעדער צייַט מיר גיין דורך די בוים,
מיר רע געגאנגען צו שטעלן די פאָטער טייַטל צו גלייַכן דעם קראַנט טייַטל.
שטעלן פאָטער גלייַך צו קער.
דעם וועג, יעדער צייַט מיר גיין דורך,
מיר רע געגאנגען צו ענשור אַז ווי די קראַנט טייַטל געץ ינקרעמענטעד
דער פאָטער טייַטל גייט עס - נאָר איין מדרגה העכער ווי די קראַנט טייַטל אין דעם בוים.
אַז אַלע קוקט שיין גוט.
>> איך טראַכטן די איין זאַך וואָס מיר וועט ווילן צו סטרויערן איז דאָס בויען נאָדע אומגעקערט נאַל.
אין סדר צו באַקומען בויען נאָדע צו פאקטיש הצלחה צוריקקומען נאַל,
מיר וועט האָבן צו מאָדיפיצירן אַז קאָד,
ווייַל דאָ, מיר קיינמאָל טעסטעד צו מאַכן זיכער אַז מאַללאָק אומגעקערט אַ גילטיק טייַטל.
אַזוי, אויב (N! = נאַל), דעריבער -
אויב מאַללאָק אומגעקערט אַ גילטיק טייַטל, דעמאָלט מיר וועט ינישאַלייז עס;
אַנדערש, מיר וועט נאָר צוריקקומען און וואָס וועט סוף זיך אומגעקערט נאַל פֿאַר אונדז.
איצט אַלע קוקט שיין גוט. זאל ס מאַכן זיכער דאָס פאקטיש קאַמפּיילז.
מאַכן ביינערי בוים, און טאַקע, מיר ווע גאַט עטלעכע שטאָפּן געגאנגען אויף דאָ.
>> מיר ווע גאַט אַ ימפּליסאַט דערקלערונג פון פונקציאָנירן בויען נאָדע.
ווידער, מיט די קאַמפּיילערז, מיר רע געגאנגען צו אָנהייבן בייַ די שפּיץ.
וואָס וואָס מוזן מיינען איז אַז איך בין פאַך בויען נאָדע איידער איך ווע פאקטיש דערקלערט עס.
זאל ס גיין צוריק צו דער קאָד טאַקע געשווינד.
מעגילע אַראָפּ, און זיכער גענוג, מיין אַרייַנלייגן פֿונקציע איז דערקלערט
אויבן די בויען נאָדע פונקציאָנירן,
אָבער איך בין טריינג צו נוצן בויען נאָדע ין פון אַרייַנלייגן.
איך בין געגאנגען צו גיין אין און קאָפּי - און דעמאָלט פּאַפּ די בויען נאָדע פונקציאָנירן וועג אַרויף דאָ אין די שפּיץ.
אַז וועג, אַלעווייַ וואָס וועט אַרבעטן. זאל ס געבן דעם אנדערן גיין.
איצט עס אַלע קאַמפּיילז. כל איז גוט.
>> אבער בייַ דעם פונט, מיר האָבן נישט פאקטיש גערופן אונדזער אַרייַנלייגן פונקציאָנירן.
מיר נאָר וויסן אַז עס קאַמפּיילז, אַזוי לאָזן ס גיין אין און שטעלן עטלעכע רופט ין
זאל ס טאָן אַז אין אונדזער הויפּט פֿונקציע.
דאָ, מיר קאַמענטאַד אויס 5, 8, און 2,
און דעמאָלט מיר האט ניט דראָט זיי אַרויף אַראָפּ דאָ.
זאל ס מאַכן עטלעכע רופט צו אַרייַנלייגן,
און לאָזן ס אויך ניצן די זעלבע מין פון שטאָפּן אַז מיר געוויינט
ווען מיר געמאכט די פּרינטף רופט צו מאַכן זיכער אַז אַלץ האט באַקומען ינסערטאַד רעכט.
איך בין געגאנגען צו צייכענען און פּאַפּ,
און אַנשטאָט פון כּולל מיר רע געגאנגען צו טאָן אַרייַנלייגן.
און אַנשטאָט פון 6, 10, און 1, מיר רע געגאנגען צו נוצן 5, 8, און 2.
דאס זאָל אַלעווייַ אַרייַנלייגן 5, 8, און 2 אין די בוים.
צונויפנעמען. כל איז גוט. איצט מיר וועט פאקטיש לויפן אונדזער פּראָגראַם.
>> אַלץ אומגעקערט פאַלש.
אַזוי, 5, 8, און 2 האט נישט גיין, און עס קוקט ווי כּולל האט נישט געפֿינען זיי אָדער.
וואָס ס 'געגאנגען אויף? זאל ס פארגרעסער אויס.
דער ערשטער פּראָבלעם איז געווען אַז אַרייַנלייגן געווען צו צוריקקומען פאַלש,
און עס קוקט ווי אַז ס ווייַל מיר לינקס אין אונדזער צוריקקומען פאַלש רופן,
און מיר קיינמאָל פאקטיש אומגעקערט אמת.
מיר קענען שטעלן אַז אַרויף.
די רגע פּראָבלעם איז, איצט אַפֿילו אויב מיר טאָן - ראַטעווען דעם, פאַרלאָזן דעם,
לויפן מאַכן ווידער, האָבן עס צונויפנעמען, דעריבער לויפן אים -
מיר זען אַז עפּעס אַנדערש געטראפן דאָ.
די 5, 8, און 2 זענען נאָך קיינמאָל געפונען אין דער בוים.
אַזוי, וואָס ס 'געגאנגען אויף?
>> זאל ס נעמען אַ קוק בייַ דעם אין די קאָד.
זאל ס זען אויב מיר קענען רעכענען דאָס אויס.
מיר אָנהייבן מיט דער פאָטער ניט זייַענדיק נאַל.
מיר שטעלן די קראַנט טייַטל גלייַך צו דער וואָרצל טייַטל,
און מיר רע געגאנגען צו ווערק אונדזער וועג אַראָפּ דורך דעם בוים.
אויב די קראַנט נאָדע איז נישט נאַל, דעמאָלט מיר וויסן אַז מיר קענען מאַך אַראָפּ אַ קליין ביסל.
מיר שטעלן אונדזער פאָטער טייַטל צו זייַן גלייַך צו די קראַנט טייַטל,
אָפּגעשטעלט די ווערט - אויב די וואַלועס זענען די זעלבע מיר אומגעקערט פאַלש.
אויב די וואַלועס זענען ווייניקער מיר אריבערגעפארן צו די רעכט;
אַנדערש, מיר אריבערגעפארן צו די לינקס.
דעמאָלט מיר בויען אַ נאָדע. איך וועט פארגרעסער אין אַ קליין ביסל.
און דאָ, מיר רע געגאנגען צו פּרובירן צו דראָט אַרויף די וואַלועס צו זייַן די זעלבע.
וואָס ס 'געגאנגען אויף? זאל ס זען אויב עפשער וואַלגרינד קענען געבן אונדז אַ אָנצוהערעניש.
>> איך ווי צו נוצן וואַלגרינד נאָר ווייַל וואַלגרינד טאַקע געשווינד לויפט
און דערציילט איר אויב עס זענען קיין זכּרון ערראָרס.
ווען מיר לויפן וואַלגרינד אויף דעם קאָד,
ווי איר קענען זען רעכט הערע--וואַלגרינד./בינאַרי_טרעע--אַנד שלאָגן אַרייַן.
איר זען אַז מיר האבן נישט האָבן קיין זכּרון טעות, אַזוי עס קוקט ווי אַלץ ס אָוקיי אַזוי ווייַט.
מיר טאָן האָבן עטלעכע זכּרון ליקס, וואָס מיר וויסן, ווייַל מיר ניטאָ ניט
געשעעניש צו פֿרייַ קיין פון אונדזער נאָודז.
זאל ס פּרובירן פליסנדיק גדב צו זען וואָס ס 'פאקטיש געגאנגען אויף.
מיר וועט טאָן גדב. / בינאַרי_טרעע. עס בוטיד אַרויף נאָר פייַן.
זאל ס שטעלן אַ ברעכן פונט אויף אַרייַנלייגן.
זאל ס 'לויפן.
עס קוקט ווי מיר קיינמאָל פאקטיש גערופן אַרייַנלייגן.
עס קוקט ווי די פּראָבלעם איז נאָר אַז ווען איך געביטן אַראָפּ דאָ אין הויפּט -
אַלע פון ​​די פּרינטף רופט פון כּולל -
איך קיינמאָל פאקטיש געביטן די צו רופן אַרייַנלייגן.
איצט לאָזן ס געבן עס אַ פּרובירן. זאל ס צונויפנעמען.
כל קוקט גוט דאָרט. איצט לאָזן ס פּרובירן פליסנדיק עס, זען וואָס כאַפּאַנז.
אָלרייט! אַלץ קוקט שיין גוט דאָרט.
>> די לעצט זאַך צו טראַכטן וועגן איז, זענען דאָרט קיין ברעג פאלן צו דעם אַרייַנלייגן?
און עס טורנס אויס אַז, נו, די איין ברעג פאַל וואָס איז שטענדיק טשיקאַווע צו טראַכטן וועגן
איז, וואָס כאַפּאַנז אויב אייער בוים איז ליידיק און איר רופן דעם אַרייַנלייגן פונקציאָנירן?
וועט עס אַרבעט? נו, לאָזן ס געבן עס אַ פּרובירן.
- בינאַרי_טרעע. C -
די וועג מיר רע געגאנגען צו פּרובירן דאָס איז, מיר רע געגאנגען צו גיין אַראָפּ צו אונדזער הויפּט פֿונקציע,
און אלא ווי וויירינג די נאָודז אַרויף ווי דעם,
מיר רע נאָר געגאנגען צו באַמערקונג אויס די גאנצע זאַך,
און אַנשטאָט פון וויירינג אַרויף די נאָודז זיך,
מיר קענען פאקטיש נאָר גיין פאָרויס און אויסמעקן אַלע פון ​​דעם.
מיר רע געגאנגען צו מאַכן אַלץ אַ רופן צו אַרייַנלייגן.
אַזוי, לאָזן ס טאָן - אַנשטאָט פון 5, 8, און 2, מיר רע געגאנגען צו אַרייַנלייגן 7, 3, און 9.
און דעמאָלט מיר וועט אויך ווילן צו אַרייַנלייגן 6 ווי געזונט.
היט. פאַרלאָזן. מאַכן ביינערי בוים.
עס אַלע קאַמפּיילז.
מיר קענען נאָר לויפן עס ווי איז און זען וואָס כאַפּאַנז,
אָבער עס ס אויך געגאנגען צו זייַן טאַקע וויכטיק צו מאַכן זיכער אַז
מיר טאָן ניט האָבן קיין זכּרון ערראָרס,
זינט דעם איז איינער פון אונדזער ברעג פאלן אַז מיר וויסן וועגן.
>> זאל ס מאַכן זיכער אַז עס אַרבעט גוט אונטער וואַלגרינד,
וואָס מיר וועט טאָן דורך נאָר פליסנדיק וואַלגרינד. / בינאַרי_טרעע.
עס קוקט ווי מיר טאַקע האָבן איין טעות פון איין קאָנטעקסט -
מיר האָבן דעם סעגמאַנטיישאַן שולד.
וואָס געטראפן?
וואַלגרינד פאקטיש דערציילט אונדז ווו עס איז.
פארגרעסער אויס אַ קליין ביסל.
עס קוקט ווי עס ס געשעעניש אין אונדזער אַרייַנלייגן פונקציאָנירן,
ווו מיר האָבן אַ פאַרקריפּלט לייענען פון נומער 4 אין אַרייַנלייגן, שורה 60.
זאל ס גיין צוריק און זען וואָס ס 'געגאנגען אויף דאָ.
פארגרעסער אויס טאַקע שנעל.
איך ווילן צו מאַכן זיכער אַז עס טוט נישט גיין צו די ברעג פון דער פאַרשטעלן אַזוי מיר קענען זען אַלץ.
ציען אַז אין אַ קליין ביסל. אָלרייט.
מעגילע אַראָפּ, און דער פּראָבלעם איז רעכט דאָ.
וואָס כאַפּאַנז אויב מיר באַקומען אַראָפּ און אונדזער קראַנט נאָדע איז שוין נאַל,
אונדזער פאָטער נאָדע איז נאַל, אַזוי אויב מיר קוקן זיך אין די זייער שפּיץ, רעכט דאָ -
אויב דעם בשעת שלייף קיינמאָל פאקטיש עקסאַקיוץ
ווייַל אונדזער קראַנט ווערט איז נאַל - אונדזער וואָרצל איז נאַל אַזוי קער איז נאַל -
דעמאָלט אונדזער פאָטער קיינמאָל געץ שטעלן צו קער אָדער צו אַ גילטיק ווערט,
אַזוי, פאָטער וועט אויך זייַן נאַל.
מיר דאַרפֿן צו געדענקען צו טשעק פֿאַר וואָס
דורך די צייַט מיר באַקומען אַראָפּ דאָ, און מיר אָנהייבן אַקסעסינג דער פאָטער 'ס ווערט.
אַזוי, וואָס כאַפּאַנז? נו, אויב דער פאָטער איז נאַל -
אויב (פאָטער == נאַל) - דעמאָלט מיר וויסן אַז
עס מוזן נישט זייַן עפּעס אין דעם בוים.
מיר מוזן זייַן טריינג צו אַרייַנלייגן עס בייַ די וואָרצל.
מיר קענען טאָן אַז דורך נאָר באַשטעטיקן די וואָרצל גלייַך צו די נייַ נאָדע.
דעמאָלט בייַ דעם פונט, מיר טאָן נישט פאקטיש וועלן צו גיין דורך די אנדערע זאכן.
אַנשטאָט, רעכט דאָ, מיר קענען טאָן אָדער אַן אַנדערש-אויב-אַנדערש,
אָדער מיר קען פאַרבינדן אַלץ אַרויף דאָ אין אַן אַנדערש,
אָבער דאָ מיר וועט נאָר נוצן אַנדערש און טאָן עס אַז וועג.
איצט, מיר רע געגאנגען צו פּרובירן צו מאַכן זיכער אַז אונדזער פאָטער איז נישט נאַל
איידער דעמאָלט פאקטיש טריינג צו צוטריט זייַן פעלדער.
דאס וועט העלפן אונדז ויסמייַדן די סעגמאַנטיישאַן שולד.
אַזוי, מיר פאַרלאָזן, פארגרעסער אויס, צונויפנעמען, לויפן.
>> קיין ערראָרס, אָבער מיר נאָך האָבן אַ בינטל פון זכּרון ליקס
ווייַל מיר האבן נישט פֿרייַ קיין פון אונדזער נאָודז.
אבער, אויב מיר גיין אַרויף דאָ, און מיר קוקן אין אונדזער פּרינטאַוט,
מיר זען אַז, געזונט, קוקט ווי אַלע פון ​​אונדזער ינסערץ זענען אומגעקערט אמת, וואָס איז גוט.
די ינסערץ זענען אַלע אמת,
און דעריבער די צונעמען כּולל רופט זענען אויך אמת.
>> גוט אַרבעט! עס קוקט ווי מיר ווע הצלחה געשריבן אַרייַנלייגן.
אַז ס אַלע מיר האָבן פֿאַר דעם וואָך ס פּראָבלעם באַשטעטיק ספּעסיפיקאַטיאָן.
איינער שפּאַס אַרויסרופן צו טראַכטן וועגן איז ווי איר וואָלט פאקטיש גיין אין
און פֿרייַ אַלע פון ​​די נאָודז אין דעם בוים.
מיר קענען טאָן אַזוי אַ נומער פון פאַרשידענע וועגן,
אָבער איך וועט לאָזן אַז אַרויף צו איר צו עקספּערימענט,
און ווי אַ שפּאַס אַרויסרופן, פּרובירן און מאַכן זיכער אַז איר קענען מאַכן זיכער
אַז דעם וואַלגרינד באַריכט קערט קיין ערראָרס און קיין ליקס.
>> גוט גליק אויף דעם וואָך ס הופפמאַן קאָודינג פּראָבלעם שטעלן,
און מיר וועט זען איר ווייַטער וואָך!
[CS50.TV]