ערימה בינומית – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
בטעות הסרתי את המקטע הזה בתיקון הקודם
ה"תיקון" שבוצע שגוי. קודם מחליפים ואז מוחקים קודקוד בודד
שורה 20:
i-1{{כ}},...,0,1, מבצעים מיזוג (המתואר בפיסקה הבאה) בין העצים הללו לשאר הערימה. סיבוכיות: <math>O(\log n)</math>.
* '''מיזוג''': בהינתן שתי ערימות, ממזגים אותן בדומה ל[[חיבור]] בינארי: עוברים על הדרגות מהקטנה לגדולה, ובכל דרגה, אם יש רק עץ אחת מדרגה כזו מכניסים לערימה המאוחדת, ואם יש שניים, מאחדים אותם ומתייחסים אליהם כאל עץ מדרגה גדולה יותר (בדומה לנשא בחיבור רגיל) כיוון שישנם כ-log n עצים בכל ערימה, הסיבוכיות היא <math>O(\log n)</math>.
* '''מחיקה''': מחיקתכיוון אלמנטשערימה בערימהאינה דורשתתומכת מחיקתבחיפוש, הצומתמחיקה המייצגצריכה אותולבוא עם מצביע לאיבר הנמחק. כדי למחוק מחליפים את ערך הצומת עם אביו, ואז שוב עד לשורש (פעולה זאת לוקחת כעומק המקסימלי של עץ שהוא כ-log n), ואז מוחקים אותו וממזגים את בניו עם שאר הערימה. סיבוכיות: <math>O(\log n)</math>.
* '''הקטנת מפתח''': בהינתן מצביע לצומת מסוים, מקטינים את המפתח, ואם הוא קטן מאביו, מחליפים ביניהם, ושוב אם הוא קטן מאביו מחליפים ביניהם עד שהוא גדול מאביו (או מגיע לשורש). <math>O (\log n)</math>.