מבני נתונים ואלגוריתמים - מחברת קורס/מבני נתונים/עצי חיפוש בינריים: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
שורה 279:
כעת, לאחר שאנו יודעים כיצד לבצע splice, נוכל למצוא אלגוריתם למחיקת איבר. ראינו כבר שהמקרה שבו יש לצומת בן אחד (או פחות), קל
לפתירה על ידי splice. אם יש לצומת שני בנים, אז בהכרח יש לו בן ימני.▼
▲לפתירה על ידי splice. אם יש לצומת שני בנים, אז בהכרח יש לו בן
{{משפט|תוכן =
אם לצומת יש בן ימני, אז לצאצא השמאלי ביותר של בנו הימני אין בן שמאלי.}}
כלומר, יוצא שתמיד נוכל להשתמש בפעולת splice:
#אם לצומת רק בן אחד (או פחות), אז אפשר לבצע עליו splice.▼
#אם לצומת יש שני בנים, אז לבנו הימני יש צאצא שלו לכל היותר בן אחד. נוכל לבצע splice על אותו הצאצא, לכן.▼
▲#אם לצומת רק בן אחד (או פחות), אז אפשר לבצע עליו
▲#אם לצומת יש שני בנים, אז לבנו הימני יש צאצא שלו לכל היותר
<source lang = "python">
# Erases a node (nd) from a tree (t).
Erase(t, nd)
1
2
3
4
5
6
7
שורה 318 ⟵ 312:
[[תמונה:dsa_binary_search_delete.png|מרכז|100%|מחיקת צומת מעץ חיפוש בינרי.]]}}
{{משפט|תוכן =
סיבוכיות הפעולה היא <math dir = "ltr">\displaystyle \Theta(h)</math> במקרה הגרוע, כאשר <math dir = "ltr">\displaystyle h</math> הוא גובה העץ (מרחק המקסימום מהשורש לעלה כלשהו).}}
|