3.7 KiB
title | localeTitle |
---|---|
Red Black Trees | أشجار سوداء حمراء |
أشجار سوداء حمراء
Red-Black Tree هي شجرة بحث ثنائية توازن ذاتي (BST) حيث تتبع كل عقدة القواعد التالية.
- كل عقدة لديها طفلين ، إما باللون الأحمر أو الأسود.
- كل عقدة أوراق شجرة سوداء دائما.
- كل عقدة حمراء لديها كل من أطفالها اللون الأسود.
- لا يوجد عقدان أحمران متجاوران (لا يمكن أن تحتوي العقدة الحمراء على أصل أحمر أو أحمر).
- يحتوي كل مسار من الجذر إلى عقدة أوراق الشجر على نفس عدد العقد السوداء (يسمى "ارتفاع الأسود").
لماذا أشجار حمراء سوداء؟
معظم عمليات BST (على سبيل المثال ، البحث ، max ، min ، insert ، delete .. etc) تأخذ O (h) time حيث h هي ارتفاع BST. قد تصبح تكلفة هذه العمليات O (n) لشجرة ثنائية منحرفة. إذا تأكدنا من أن ارتفاع الشجرة يبقى O (Logn) بعد كل إدخال وحذف ، فيمكننا ضمان حد أقصى O (Logn) لجميع هذه العمليات. يكون طول شجرة Red Black دائمًا O (Logn) حيث n هو عدد العقد في الشجرة.
مقارنة مع شجرة AVL
أشجار AVL أكثر توازنا مقارنة بالأشجار الحمراء السوداء ، ولكنها قد تسبب المزيد من التناوب أثناء الإدراج والحذف. لذلك إذا كان تطبيقك يتضمن العديد من عمليات الإدراج والحذف المتكررة ، فيجب تفضيل أشجار Red Black. وإذا كانت عمليات الإدراج والحذف أقل تكرارًا ، وكان البحث عملية أكثر تواترًا ، فيجب تفضيل شجرة AVL على Red Black Tree.
Left-Leaning شجرة حمراء - سوداء
شجرة red-leaning red-black (LLRB) هي نوع من شجرة البحث الثنائية ذات التوازن الذاتي. وهو متغير من الشجرة الحمراء - السوداء ويضمن نفس التعقيد التقاربي للعمليات ، ولكنه مصمم ليكون أسهل في التنفيذ.
خصائص Left Leaning - الأشجار الحمراء - السوداء
تتميز جميع خوارزميات الشجر باللون الأحمر والأسود التي تم اقتراحها بوقت بحث في أسوأ الحالات يحدها مضاعف ثابت صغير للسجل N في شجرة من مفاتيح N ، والسلوك الذي يتم ملاحظته في الممارسة عادة ما يكون هو نفسه أسرع من في أسوأ حالة ملزمة ، على مقربة من العقد الأمثل سجل N التي سيتم ملاحظتها في شجرة متوازنة تماما.
على وجه التحديد ، في شجرة باللون الأحمر- الأسود ذي الجانبين الأيسر مبنية من مفاتيح عشوائية N: -> بحث ناجح عشوائي يفحص log2 N - 0.5 العقد. -> متوسط ارتفاع الشجرة هو 2 log2 N