"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تنفيذ طريقة الحذف

تنفيذ طريقة الحذف

تم النشر بتاريخ 2024-07-31
تصفح:216

حذف عنصر من شجرة AVL هو نفس حذفه من BST، باستثناء أن الشجرة قد تحتاج إلى إعادة التوازن. كما تمت مناقشته في قسم حذف العناصر من BST، لحذف عنصر من شجرة ثنائية، تحدد الخوارزمية أولاً العقدة التي تحتوي على العنصر. دع current يشير إلى العقدة التي تحتوي على العنصر في الشجرة الثنائية وparent يشير إلى أصل العقدة current. قد تكون العقدة الحالية فرعًا يسارًا أو فرعًا يمينًا للعقدة الأصل .
تنشأ حالتان عند حذف عنصر.

الحالة 1: العقدة الحالية لا تحتوي على فرع يسار، كما هو موضح في الشكل أدناه (أ). لحذف العقدة الحالية، ما عليك سوى توصيل العقدة الأصل بالعقدة الفرعية الصحيحة للعقدة الحالية، كما هو موضح في الشكل أدناه (ب). قد يكون ارتفاع العقد على طول المسار من العقدة الأصل حتى الجذر قد انخفض. للتأكد من أن الشجرة متوازنة، قم باستدعاء

مسار التوازن(parent.element);

Implementing the delete Method

الحالة 2: العقدة الحالية لها فرع أيسر. دع rightMost يشير إلى العقدة التي تحتوي على أكبر عنصر في الشجرة الفرعية اليسرى للعقدة الحالية وparentOfRightMost يشير إلى العقدة الأصلية لـ rightMost العقدة ، كما هو موضح في الشكل أدناه (أ). لا يمكن أن تحتوي العقدة rightMost على فرع فرعي أيمن ولكن قد يكون لها فرع فرعي أيسر. استبدل قيمة العنصر في العقدة الحالية بالقيمة الموجودة في العقدة rightMost، وقم بتوصيل العقدة parentOfRightMost بالطفل الأيسر للعقدة rightMost، واحذف العقدة rightMost، كما هو موضح في الشكل أدناه (ب).

Image description

قد يكون ارتفاع العقد على طول المسار من parentOfRightMost حتى الجذر قد انخفض. للتأكد من أن الشجرة متوازنة، قم باستدعاء

balancePath(parentOfRightMost);

بيان الافراج تم نشر هذه المقالة على: https://dev.to/paulike/implementing-the-delete-method-44k3?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3