freeCodeCamp/guide/arabic/algorithms/avl-trees/index.md

5.0 KiB

title localeTitle
AVL Trees أشجار AVL

أشجار AVL

شجرة AVL هي نوع فرعي من شجرة البحث الثنائية.

A BST هي بنية بيانات تتكون من العقد. لديها الضمانات التالية:

  1. كل شجرة لديها عقدة جذرية (في الجزء العلوي).
  2. العقدة الجذرية لديها صفر أو أكثر من العقد التابعة.
  3. كل عقدة طفل لديها صفر أو أكثر العقد التابعة ، وهلم جرا.
  4. كل عقدة لديها ما يصل إلى طفلين.
  5. لكل عقدة ، يكون أحفادها الأيسر أقل من العقدة الحالية ، وهي أقل من الأسبقية الصحيحة.

تتمتع أشجار AVL بضمان إضافي:

  1. لا يمكن أن يكون الفرق بين عمق الأشجار الفرعية اليمنى واليسرى أكثر من واحد. للحفاظ على هذا الضمان ، سيشمل تنفيذ AVL خوارزمية لإعادة توازن الشجرة عند إضافة عنصر إضافي من شأنه أن يخل بهذا الضمان.

تحتوي أشجار AVL على أسوأ حالة بحث ، وإدراج وحذف وقت O (log n).

الدوران الأيمن

شجرة AVL التناوب الصحيح

الدوران الأيسر

شجرة AVL تناوب اليسار

عملية الإدراج AVL

ستفعل إدخال مشابه لإدراج شجرة البحث الثنائي العادي. بعد الإدراج ، يمكنك إصلاح خاصية AVL باستخدام عمليات الاستدارة إلى اليمين أو اليسار.

  • إذا كان هناك اختلال في الطفل الأيسر من الشجرة الفرعية الصحيحة ، عندئذ تقوم بتدوير يسار يمين.
  • إذا كان هناك اختلال في الطفل الأيسر من الشجرة الفرعية اليسرى ، فأنت تقوم بتناوب اليمين.
  • إذا كان هناك اختلال في الطفل الصحيح من الشجرة الفرعية الصحيحة ، فأنت تقوم بتدوير اليسار.
  • إذا كان هناك اختلال في الطفل الأيمن من الشجرة الفرعية اليسرى ، فأنت تقوم بتناوب اليمين إلى اليسار.

معلومات اكثر:

يوتيوب - شجرة AVL

شجرة AVL هي شجرة بحث ثنائية التوازن الذاتي. شجرة AVL هي شجرة بحث ثنائية لها الخصائص التالية: -> تختلف الأشجار الفرعية لكل عقدة في الارتفاع بمقدار واحد على الأكثر. -> كل شجرة فرعية هي شجرة AVL.

تتحقق شجرة AVL من ارتفاع اليسار والأشجار الفرعية اليمنى وتؤكد أن الفرق لا يزيد عن 1. ويسمى هذا الاختلاف "عامل التوازن". يكون طول شجرة AVL دائمًا O (Logn) حيث n هو عدد العقد في الشجرة.

دورات AVL للشجرة: -

في شجرة AVL ، بعد تنفيذ كل عملية مثل الإدراج والحذف ، نحتاج إلى التحقق من عامل التوازن لكل عقدة في الشجرة. إذا استوفت كل عقدة شرط عامل التوازن ، فإننا ننتهي من العملية وإلا يجب أن نجعلها متوازنة. نحن نستخدم عمليات الدوران لجعل الشجرة متوازنة عندما تصبح الشجرة غير متوازنة بسبب أي عملية.

تستخدم عمليات الدوران لجعل الشجرة متوازنة. يوجد أربع دورات ويتم تصنيفها إلى نوعين: -> دوران يسار واحد (دوران LL) في LL Rotation ، تقوم كل عقدة بنقل موضع واحد إلى اليسار من الموضع الحالي. -> دوران لليمين (دوران RR) في تناوب RR ، تقوم كل عقدة بنقل موضع واحد إلى اليمين من الموضع الحالي. -> دوران لليمين الأيسر (دورة LR) إن LR Rotation هو عبارة عن مجموعة من الدوران الأيسر المتبقي متبوعًا بالدوران اليميني المفرد. في LR Rotation ، تقوم كل عقدة أولاً بنقل موضع واحد إلى اليسار ثم موضع واحد إلى اليمين من الموضع الحالي. -> تناوب يمين يسار (دوران RL) يكون RL Rotation عبارة عن توليفة من الدوران الأيمن الفردي متبوعًا بالدوران الأيسر الوحيد. في RL Rotation ، تقوم كل عقدة أولاً بنقل موضع واحد إلى اليمين ثم موضع واحد إلى اليسار من الموضع الحالي.