شجرة البحث الثنائية

في علم الحاسوب ، تُعرف شجرة البحث الثنائية ( BST )، والتي تُسمى أيضًا الشجرة الثنائية المرتبة أو المصنفة ، بأنها بنية بيانات شجرة ثنائية جذرية ، حيث يكون مفتاح كل عقدة داخلية أكبر من جميع المفاتيح في الشجرة الفرعية اليسرى لتلك العقدة، وأصغر من جميع المفاتيح في الشجرة الفرعية اليمنى لها. ويتناسب التعقيد الزمني للعمليات على شجرة البحث الثنائية تناسبًا طرديًا مع ارتفاع الشجرة.
تتيح أشجار البحث الثنائية إجراء بحث ثنائي سريع للبحث عن عناصر البيانات وإضافتها وحذفها. ولأن عقد شجرة البحث الثنائية مُرتبة بحيث تتجاوز كل مقارنة نصف الشجرة المتبقية تقريبًا، فإن أداء البحث يتناسب طرديًا مع اللوغاريتم الثنائي . وقد طُوّرت أشجار البحث الثنائية في ستينيات القرن الماضي لحل مشكلة التخزين الفعال للبيانات المصنفة، ويُنسب الفضل في ذلك إلى كونواي بيرنرز لي وديفيد ويلر .
يعتمد أداء شجرة البحث الثنائية على ترتيب إدخال العقد فيها، إذ قد يؤدي الإدخال العشوائي إلى انحلال الشجرة. ويمكن بناء عدة صيغ مختلفة من شجرة البحث الثنائية مع ضمان أداء في أسوأ الحالات. وتشمل العمليات الأساسية: البحث، والاجتياز، والإدخال، والحذف. وتتفوق أشجار البحث الثنائية ذات التعقيد المضمون في أسوأ الحالات على المصفوفات غير المرتبة، التي تتطلب وقت بحث خطي .
يُظهر تحليل تعقيد شجرة البحث الثنائية أن عمليات الإدراج والحذف والبحث تستغرق في المتوسطلالعقد. في أسوأ الأحوال، تتدهور إلى ما يشبه قائمة مرتبطة أحادية:لمعالجة الزيادة غير المحدودة في ارتفاع الشجرة مع عمليات الإضافة والحذف العشوائية، تم تقديم متغيرات متوازنة ذاتيًا لأشجار البحث الثنائية لتقييد أسوأ تعقيد للبحث بما يعادل اللوغاريتم الثنائي. كانت أشجار AVL أول أشجار بحث ثنائية متوازنة ذاتيًا، وقد ابتكرها جورجي أديلسون-فيلسكي وإيفجيني لانديس عام 1962. [ 1 ] [ 2 ] [ 3 ]
يمكن استخدام أشجار البحث الثنائية لتنفيذ أنواع البيانات المجردة مثل المجموعات الديناميكية وجداول البحث وقوائم الانتظار ذات الأولوية ، وتستخدم في خوارزميات الفرز مثل فرز الشجرة .
تاريخ
تم اكتشاف خوارزمية شجرة البحث الثنائية بشكل مستقل من قبل العديد من الباحثين، بمن فيهم بي إف ويندلي، وأندرو دونالد بوث ، وأندرو كولين ، وتوماس إن هيبارد . [ 4 ] [ 5 ] تُنسب الخوارزمية إلى كونواي بيرنرز لي وديفيد ويلر ، اللذين استخدماها لتخزين البيانات المصنفة على أشرطة مغناطيسية عام 1960. [ 6 ] تُعد خوارزمية هيبارد من أوائل خوارزميات شجرة البحث الثنائية وأكثرها شيوعًا. [ 4 ]
يزداد التعقيد الزمني لشجرة البحث الثنائية بلا حدود مع ارتفاع الشجرة إذا تم إدخال العقد بترتيب عشوائي، لذلك تم تقديم أشجار البحث الثنائية ذاتية التوازن للحد من ارتفاع الشجرة.[ 7 ] تم تقديم العديد من أشجار البحث الثنائية المتوازنة الارتفاع لتقييد ارتفاع الشجرة، مثل أشجار AVL ، و Treaps ، وأشجار الأحمر والأسود . [ 8 ]
ملخص
شجرة البحث الثنائية هي شجرة ثنائية جذرية تُرتّب فيها العقد بترتيب كلي صارم ، حيث تُخزّن العقد ذات المفاتيح الأكبر من أي عقدة معينة (أ) في الأشجار الفرعية اليمنى لتلك العقدة (أ) ، بينما تُخزّن العقد ذات المفاتيح المساوية أو الأصغر من ( أ) في الأشجار الفرعية اليسرى لـ (أ)، مما يحقق خاصية البحث الثنائي . [ 9 ] : 298 [ 10 ] : 287
تُعدّ أشجار البحث الثنائية فعّالة أيضًا في عمليات الفرز وخوارزميات البحث . مع ذلك، يعتمد تعقيد البحث في شجرة البحث الثنائية على ترتيب إدخال وحذف العقد؛ ففي أسوأ الحالات، قد تؤدي العمليات المتتالية في شجرة البحث الثنائية إلى انحلال وتكوين بنية شبيهة بالقائمة المرتبطة أحادية الاتجاه (أو "الشجرة غير المتوازنة")، وبالتالي يكون لها نفس تعقيد أسوأ الحالات للقائمة المرتبطة . [ 11 ] [ 9 ] : 299-302
تُعد أشجار البحث الثنائية أيضًا بنية بيانات أساسية تُستخدم في بناء هياكل البيانات المجردة مثل المجموعات والمجموعات المتعددة والمصفوفات الترابطية .
العمليات
البحث
يمكن برمجة البحث في شجرة البحث الثنائية عن مفتاح معين بشكل متكرر أو تكراري .
يبدأ البحث بفحص العقدة الجذرية . إذا كانت الشجرة فارغة (nil )، فهذا يعني أن المفتاح المطلوب غير موجود فيها. أما إذا كان المفتاح مساويًا لمفتاح الجذر، فإن البحث ينجح وتُعاد العقدة. إذا كان المفتاح أصغر من مفتاح الجذر، ينتقل البحث إلى الشجرة الفرعية اليسرى. وبالمثل، إذا كان المفتاح أكبر من مفتاح الجذر، ينتقل البحث إلى الشجرة الفرعية اليمنى. تُكرر هذه العملية حتى يُعثر على المفتاح أو تُصبح الشجرة الفرعية المتبقية فارغة.إذا لم يتم العثور على المفتاح المطلوب بعدإذا تم الوصول إلى الشجرة الفرعية، فإن المفتاح غير موجود في الشجرة. [ 10 ] : 290-291
البحث المتكرر
تُنفذ الشفرة الزائفة التالية إجراء البحث في شجرة البحث الثنائية باستخدام الاستدعاء الذاتي . [ 10 ] : 290
Recursive-Tree-Search(x, key) إذا كان x = NIL أو key = x.key، فأرجع x. إذا كان key < x.key ، فأرجع Recursive -Tree-Search(x.left, key). وإلا، فأرجع Recursive-Tree-Search(x.right, key) . |
تستمر العملية التكرارية حتىأويتم العثور على ما يتم البحث عنه.
البحث التكراري
يمكن تحويل النسخة التكرارية من البحث إلى حلقة while . وقد وُجد أن النسخة التكرارية أكثر كفاءة في معظم الأجهزة . [ 10 ] : 291
Iterative-Tree-Search(x, key) while x ≠ NIL and key ≠ x.key do if key < x.key then x := x.left آخر x := x.right نهاية الشرط، كرر، أعد x |
بما أن البحث قد يستمر حتى عقدة طرفية معينة ، فإن تعقيد وقت تشغيل بحث شجرة البحث الثنائية هوأينيمثل ارتفاع الشجرة . ومع ذلك، فإن أسوأ حالة للبحث في شجرة البحث الثنائية هيأينيمثل العدد الإجمالي للعقد في شجرة البحث الثنائية، لأن شجرة البحث الثنائية غير المتوازنة قد تتحول إلى قائمة مرتبطة. ومع ذلك، إذا كانت شجرة البحث الثنائية متوازنة الارتفاع، فإن الارتفاع هو[ 10 ] : 290
الخلف والسلف
بالنسبة لبعض العمليات، بالنظر إلى عقدةإيجاد خليفة أو سلف لـيُعدّ هذا الأمر بالغ الأهمية. بافتراض أن جميع مفاتيح شجرة البحث الثنائية (BST) متميزة، فإنّ العقدة التالية للعقدةفي شجرة البحث الثنائية، تكون العقدة التي تحتوي على أصغر مفتاح أكبر منمفتاح العقدة. من ناحية أخرى، العقدة السابقة للعقدةفي شجرة البحث الثنائية، تكون العقدة التي تحتوي على أكبر مفتاح أصغر منمفتاح 's. يحدد الكود الزائف التالي العقدة التالية والعقدة السابقة لهافي BST. [ 12 ] [ 13 ] [ 10 ] : 292-293
إذا كان x.right ≠ NIL ، فأرجع BST -Successor(x) نهاية الشرط y := x.parent بينما y ≠ NIL و x = y.right نفّذ x := y y := y.parent كرر الإرجاع y | إذا كان x.left ≠ NIL ، فأرجع BST -Maximum(x.left) . y := x.parent بينما y ≠ NIL و x = y.left نفّذ x := y y := y.parent كرر الإرجاع y |
تُعدّ عملياتٌ مثل إيجاد عقدة في شجرة بحث ثنائية يكون مفتاحها هو القيمة القصوى أو الدنيا، بالغة الأهمية في عملياتٍ أخرى، مثل تحديد العقدة اللاحقة والسابقة. فيما يلي الشفرة الزائفة لهذه العمليات. [ 10 ] : 291-292
BST-Maximum(x) while x.right ≠ NIL do x := x.right كرر العودة x | BST-Minimum(x) while x.left ≠ NIL do x := x.left كرر العودة x |
الإدخال
تؤدي عمليات مثل الإضافة والحذف إلى تغيير تمثيل شجرة البحث الثنائية ديناميكيًا. يجب تعديل بنية البيانات بحيث تظل خصائص شجرة البحث الثنائية محفوظة. تُضاف العقد الجديدة كعقد طرفية في شجرة البحث الثنائية. [ 10 ] : 294-295. فيما يلي تطبيق تكراري لعملية الإضافة. [ 10 ] : 294
1 BST-Insert(T, z) 2 ص := لا شيء 3 x := T.root 4 بينما x ≠ NIL نفّذ 5 ص := س 6 إذا كان z.key < x.key 7 x := x.left 8 وإلا 9 x := x.right ١٠ نهاية إذا ١١ كرر 12 z.parent := y 13 إذا كانت y = NIL فإن 14 T.root := z 15 وإلا إذا كان مفتاح z < مفتاح y، 16 y.left := z 17 آخر 18 y.right := z 19 نهاية إذا |
يحتفظ الإجراء بـ "مؤشر لاحق".بصفتي أحد الوالدينبعد التهيئة في السطر 2، تقوم حلقة while الممتدة على الأسطر من 4 إلى 11 بتحديث المؤشرات. إذايكونوبالتالي، فإن شجرة البحث الثنائية فارغة.يتم إدراجها كعقدة جذرية لشجرة البحث الثنائيةإن لم يكن كذلكتتم عملية الإدخال بمقارنة المفاتيح بمفاتيح النظام.على الأسطر من 15 إلى 19، ويتم إدراج العقدة وفقًا لذلك. [ 10 ] : 295
الحذف

حذف عقدة، على سبيل المثال، من شجرة البحث الثنائيةيحتوي على ثلاث حالات: [ 10 ] : 295-297
- لوهي عقدة طرفية، يتم استبدالها بـكما هو موضح في (أ).
- لوله طفل واحد فقط، وهو عقدة الطفل لـيتم رفعه عن طريق تعديل العقدة الأصلية لـللإشارة إلى العقدة الفرعية، وبالتالي أخذموقعها في الشجرة، كما هو موضح في (ب) و (ج).
- لولديه أطفال يمين ويسار، وهو الوريث بالترتيب لـ، يقول، يزيحباتباع الحالتين التاليتين:
- لويكونالطفل الأيمن، كما هو موضح في (د)،يُزيحويبقى الطفل الأيمن دون تغيير.
- لويكمن في الداخلالشجرة الفرعية اليمنى، لكنها ليست كذلك.الطفل الأيمن، كما هو موضح في (هـ)،يتم استبدالها أولاً بابنها الأيمن، ثم تحل محلهاموقعه في الشجرة.
- بدلاً من ذلك، يمكن أيضاً استخدام العنصر السابق في الترتيب.
تُنفذ الشفرة الزائفة التالية عملية الحذف في شجرة بحث ثنائية. [ 10 ] : 296-298
1 BST-Delete(BST, z) 2 إذا كان z.left = NIL ثم 3 عقد إزاحة (BST، z، z.right) 4- وإلا إذا كان z.right = NIL، فـ 5 Shift-Nodes(BST, z, z.left) 6 أخرى 7 y := BST-Successor(z) 8 إذا كان y.parent ≠ z ، 9 Shift-Nodes(BST, y, y.right) 10 y.right := z.right 11 y.right.parent := y 12 نهاية إذا 13 عقدة الإزاحة (BST، z، y) 14 y.left := z.left 15 y.left.parent := y 16 نهاية إذا |
1. Shift-Nodes(BST, u, v) 2 إذا كان u.parent = NIL ثم 3 BST.root := v 4- وإلا إذا كان u = u.parent.left ، 5 u.parent.left := v 5 أخرى 6 u.parent.right := v 7 نهاية الشرط 8 إذا كان v ≠ NIL ثم 9 v.parent := u.parent 10 نهاية إذا |
اليتناول الإجراء الحالات الخاصة الثلاث المذكورة أعلاه. يتناول السطران 2-3 الحالة 1، ويتناول السطران 4-5 الحالة 2، بينما يتناول السطران 6-16 الحالة 3. الدالة المساعدةيُستخدم هذا في خوارزمية الحذف لغرض استبدال العقدةمعفي شجرة البحث الثنائية[ 10 ] : 298 تتولى هذه العملية حذف (واستبدال )من.
اجتياز
يمكن اجتياز شجرة البحث الثنائية من خلال ثلاث خوارزميات أساسية: اجتياز الشجرة بالترتيب الداخلي ، والترتيب المسبق ، والترتيب اللاحق . [ 10 ] : 287
- اجتياز الشجرة بترتيب داخلي : تتم زيارة العقد من الشجرة الفرعية اليسرى أولاً، تليها العقدة الجذرية ثم الشجرة الفرعية اليمنى. يشمل هذا الاجتياز جميع العقد بترتيب تسلسل المفاتيح غير المتناقص.
- اجتياز شجرة الترتيب المسبق : تتم زيارة العقدة الجذرية أولاً، تليها الأشجار الفرعية اليسرى واليمنى.
- اجتياز شجرة الترتيب اللاحق : تتم زيارة العقد من الشجرة الفرعية اليسرى أولاً، تليها الشجرة الفرعية اليمنى، وأخيراً الجذر.
فيما يلي تطبيق تكراري لعمليات البحث في الشجرة. [ 10 ] : 287-289
Inorder-Tree-Walk(x) إذا كان x ≠ NIL ثم Inorder-Tree-Walk(x.left) زيارة العقدة Inorder-Tree-Walk(x.right) نهاية الشرط | إذا كان x ≠ NIL، فقم بزيارة العقدة Preorder-Tree-Walk(x). Preorder-Tree-Walk(x.left) Preorder-Tree-Walk(x.right) نهاية الشرط | Postorder-Tree-Walk(x) إذا كان x ≠ NIL ثم Postorder-Tree-Walk(x.left) Postorder-Tree-Walk(x.right) قم بزيارة العقدة نهاية إذا |
أشجار البحث الثنائية المتوازنة
بدون إعادة التوازن، قد تؤدي عمليات الإدخال أو الحذف في شجرة البحث الثنائية إلى التدهور، مما ينتج عنه ارتفاعمن الشجرة (حيث(عدد العناصر في الشجرة)، مما يؤدي إلى تدهور أداء البحث ليصبح مماثلاً للبحث الخطي. [ 14 ] مع الحفاظ على توازن شجرة البحث وارتفاعها محدودًا بـيُعدّ هذا عاملاً أساسياً في فائدة شجرة البحث الثنائية. ويمكن تحقيق ذلك من خلال آليات "التوازن الذاتي" أثناء عمليات تحديث الشجرة، المصممة للحفاظ على ارتفاع الشجرة ضمن التعقيد اللوغاريتمي الثنائي. [ 7 ] [ 15 ] : 50
أشجار متوازنة الارتفاع
تُعتبر الشجرة متوازنة الارتفاع إذا كان ارتفاعا الشجرة الفرعية اليسرى والشجرة الفرعية اليمنى مرتبطين بمعامل ثابت. وقد طُرحت هذه الخاصية في شجرة AVL ، واستمرت في شجرة الأحمر والأسود . [ 15 ] : 50-51 . يجب مراقبة ارتفاعات جميع العقد على المسار من الجذر إلى عقدة الورقة المُعدّلة، وربما تصحيحها، في كل عملية إدراج أو حذف في الشجرة. [ 15 ] : 52
أشجار متوازنة الوزن
في الشجرة المتوازنة الوزن، يكون معيار توازن الشجرة هو عدد أوراق الأشجار الفرعية. ويختلف وزن الأشجار الفرعية اليسرى واليمنى على الأكثر بمقدار[ 16 ] [ 15 ] : 61 ومع ذلك، فإن الفرق محصور بنسبةمن الأوزان، نظرًا لشرط التوازن القوي لـلا يمكن الحفاظ عليها معإعادة توزيع العمل أثناء عمليات الإضافة والحذف.تُعطي الأشجار المتوازنة الوزن مجموعة كاملة من شروط التوازن، حيث تحتوي كل شجرة فرعية يسرى وأخرى يمنى على جزء على الأقل منمن الوزن الإجمالي للشجرة الفرعية. [ 15 ] : 62
الأنواع
توجد عدة أشجار بحث ثنائية متوازنة ذاتيًا، بما في ذلك شجرة T ، [ 17 ] وشجرة treap ، [ 18 ] وشجرة الأحمر والأسود ، [ 19 ] وشجرة B ، [ 20 ] وشجرة 2-3 ، [ 21 ] وشجرة Splay . [ 22 ]
أمثلة على التطبيقات
نوع
تُستخدم أشجار البحث الثنائية في خوارزميات الفرز مثل فرز الشجرة ، حيث تُضاف جميع العناصر دفعة واحدة ويتم اجتياز الشجرة بترتيب تسلسلي. [ 23 ] كما تُستخدم أشجار البحث الثنائية في الفرز السريع . [ 24 ]
عمليات قائمة الانتظار ذات الأولوية
تُستخدم أشجار البحث الثنائية في تنفيذ قوائم الانتظار ذات الأولوية ، حيث تُستخدم مفاتيح العقدة كأولويات. وتتم إضافة عناصر جديدة إلى قائمة الانتظار وفقًا لعملية الإضافة العادية في أشجار البحث الثنائية، بينما تعتمد عملية الإزالة على نوع قائمة الانتظار ذات الأولوية: [ 25 ]
- إذا كانت قائمة انتظار ذات أولوية تصاعدية، فإن إزالة عنصر ذي أولوية منخفضة تتم من خلال اجتياز شجرة البحث الثنائية من اليسار.
- إذا كانت قائمة انتظار ذات أولوية تنازلية، فإن إزالة عنصر ذي أولوية قصوى تتم من خلال اجتياز شجرة البحث الثنائية باتجاه اليمين.
انظر أيضاً
مراجع
- ↑ بيتاسي، تونيان (2015). "CSC263: أشجار البحث الثنائية المتوازنة، شجرة AVL" (ملف PDF) . جامعة تورنتو ، قسم علوم الحاسوب. ص 6. مؤرشف (ملف PDF) من الأصل بتاريخ 14 فبراير 2019. تم الاطلاع عليه بتاريخ 19 مايو 2022 .
- ↑ مايرز، أندرو. "محاضرة CS 312: أشجار AVL" . جامعة كورنيل ، قسم علوم الحاسوب. مؤرشف من الأصل في 27 أبريل 2021. تم الاطلاع عليه في 19 مايو 2022 .
- ↑ أديلسون-فيلسكي، جورجي؛ لانديس، يفغيني (1962). "خوارزمية لتنظيم المعلومات". وقائع أكاديمية العلوم في الاتحاد السوفيتي (باللغة الروسية). 146 : 263-266 .الترجمة الإنجليزية من قبل مايرون ج. ريتشي في الرياضيات السوفيتية - دوكلادي ، 3:1259–1263، 1962.
- 1 2 كولبيرسون، ج.؛ مونرو، ج. آي. (1 يناير 1989). "شرح سلوك أشجار البحث الثنائية في ظل التحديثات المطولة: نموذج ومحاكاة" . مجلة الكمبيوتر . 32 (1): 68-69 . doi : 10.1093/comjnl/32.1.68 .
- ↑ كولبيرسون، ج.؛ مونرو، ج. آي. (28 يوليو 1986). "تحليل خوارزميات الحذف القياسية في أشجار البحث الثنائية ذات مجال التطابق التام" . Algorithmica . 5 ( 1-4 ). Springer Publishing ، جامعة واترلو : 297. doi : 10.1007/BF01840390 . S2CID 971813 .
- ↑ بي إف ويندلي (1 يناير 1960). "الأشجار والغابات وإعادة الترتيب" . مجلة الكمبيوتر . 3 (2): 84. doi : 10.1093/comjnl/3.2.84 .
- 1 2 كنوت، دونالد (1998). "القسم 6.2.3: الأشجار المتوازنة". فن برمجة الحاسوب (ملف PDF) . المجلد 3 ( الطبعة الثانية). أديسون-ويسلي . الصفحات 458-481 . ISBN 978-0201896855تمت أرشفة الملف (PDF) من النسخة الأصلية بتاريخ 2022-10-09.
- ↑ بول إي. بلاك، "شجرة حمراء-سوداء"، في قاموس الخوارزميات وهياكل البيانات [متاح عبر الإنترنت]، بول إي. بلاك، محرر. 12 نوفمبر 2019. (تم الاطلاع عليه في 19 مايو 2022) من: https://www.nist.gov/dads/HTML/redblack.html
- 1 2 ثاريجا، ريما (13 أكتوبر 2018). "التجزئة والتصادم". هياكل البيانات باستخدام لغة C ( الطبعة الثانية). مطبعة جامعة أكسفورد . ISBN 9780198099307.
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 كورمين، توماس هـ . ليسرسون، تشارلز إي . ريفست، رونالد ل . ستاين، كليفورد (2001). مقدمة للخوارزميات ( الطبعة الثانية). مطبعة معهد ماساتشوستس للتكنولوجيا . رقم ISBN 0-262-03293-7.
- ↑ آر. إيه. فروست؛ إم. إم. بيترسون (1 فبراير 1982). "ملاحظة موجزة حول أشجار البحث الثنائية" . مجلة الكمبيوتر . 25 (1). مطبعة جامعة أكسفورد : 158. doi : 10.1093/comjnl/25.1.158 .
- ↑ جونزو هوانغ. "تصميم وتحليل الخوارزميات" (ملف PDF) . جامعة تكساس في أرلينغتون . ص 12. مؤرشف (ملف PDF) من الأصل في 13 أبريل 2021. تم الاطلاع عليه في 17 مايو 2021 .
- ↑ راي، راي. "شجرة البحث الثنائية" . جامعة لويولا ماريماونت ، قسم علوم الحاسوب . تم الاطلاع عليه بتاريخ 17 مايو 2022 .
- ↑ ثورنتون، أليكس (2021). "ICS 46: أشجار البحث الثنائية" . جامعة كاليفورنيا، إرفاين . مؤرشف من الأصل في 4 يوليو 2021. تم الاطلاع عليه في 21 أكتوبر 2021 .
- 1 2 3 4 5 براس، بيتر (يناير 2011). هياكل البيانات المتقدمة . مطبعة جامعة كامبريدج . doi : 10.1017/CBO9780511800191 . ISBN 9780511800191.
- ↑ بلوم، نوربرت؛ ميلهورن، كورت (1978). "حول متوسط عدد عمليات إعادة التوازن في الأشجار المتوازنة الوزن" (ملف PDF) . علوم الحاسوب النظرية . 11 (3): 303-320 . doi : 10.1016/0304-3975(80)90018-3 . مؤرشف (ملف PDF) من الأصل بتاريخ 2022-10-09.
- ↑ ليمان، توبين جيه؛ كاري، مايكل جيه (25-28 أغسطس 1986). دراسة لهياكل الفهرسة لأنظمة إدارة قواعد البيانات في الذاكرة الرئيسية . المؤتمر الدولي الثاني عشر لقواعد البيانات الضخمة جدًا (VLDB 1986). كيوتو. ISBN 0-934613-18-4.
- ↑ أراغون، سيسيليا ر.؛ سيدل، رايموند (1989)، "أشجار البحث العشوائية" (ملف PDF) ، الندوة السنوية الثلاثون حول أسس علوم الحاسوب ، واشنطن العاصمة: مطبعة جمعية مهندسي الكهرباء والإلكترونيات، الصفحات 540-545 ، doi : 10.1109/SFCS.1989.63531 ، ISBN 0-8186-1982-1تمت أرشفة الملف (PDF) من النسخة الأصلية بتاريخ 2022-10-09
- ↑كورمن، توماس هـ .؛ ليسرسون، تشارلز إي .؛ ريفست، رونالد ل .؛ شتاين، كليفورد (2001). " الأشجار الحمراء والسوداء". مقدمة في الخوارزميات ( الطبعة الثانية). مطبعة معهد ماساتشوستس للتكنولوجيا. الصفحات 273-301 . ISBN 978-0-262-03293-3.
- ↑ كومر، دوغلاس (يونيو 1979)، "شجرة B المنتشرة في كل مكان"، دراسات الحوسبة ، 11 (2): 123-137 ، doi : 10.1145/356770.356776 ، ISSN 0360-0300 ، S2CID 101673
- ↑ كنوت، دونالد إي. (1998). "6.2.4". فن برمجة الحاسوب . المجلد 3 ( الطبعة الثانية). أديسون ويسلي. ISBN 9780201896855.
الأشجار 2-3 المحددة في نهاية القسم 6.2.3 تعادل أشجار B من الرتبة 3.
- ↑ سليتور، دانيال د .؛ تارجان، روبرت إي. (1985). "أشجار البحث الثنائية ذاتية التعديل" (ملف PDF) . مجلة ACM . 32 (3): 652-686 . doi : 10.1145/3828.3835 . S2CID 1165848 .
- ↑ نارايانان، أرفيند (2019). "COS226: أشجار البحث الثنائية" . كلية الهندسة والعلوم التطبيقية بجامعة برينستون . مؤرشف من الأصل في 22 مارس 2021. تم الاطلاع عليه في 21 أكتوبر 2021 – عبر cs.princeton.edu.
- ↑ شيونغ، لي. "صلة بين أشجار البحث الثنائية وخوارزمية الفرز السريع" . كلية أكسفورد بجامعة إيموري ، قسم الرياضيات وعلوم الحاسوب. مؤرشف من الأصل في 26 فبراير 2021. تم الاطلاع عليه في 4 يونيو 2022 .
- ↑ مايرز، أندرو. "ملاحظات محاضرة ومناقشة مقرر علوم الحاسوب 2112: قوائم الانتظار ذات الأولوية والأكوام" . جامعة كورنيل ، قسم علوم الحاسوب . مؤرشف من الأصل في 21 أكتوبر 2021. تم الاطلاع عليه في 21 أكتوبر 2021 .
للمزيد من القراءة
تتضمن هذه المقالة موادًا متاحة للعموم من بول إي. بلاك. "شجرة البحث الثنائية" . قاموس الخوارزميات وهياكل البيانات . المعهد الوطني للمعايير والتكنولوجيا (NIST) .- كورمن، توماس هـ .؛ ليسرسون، تشارلز إي .؛ ريفست، رونالد ل .؛ شتاين، كليفورد (2001). "12: أشجار البحث الثنائية، 15.5: أشجار البحث الثنائية المثلى". مقدمة في الخوارزميات ( الطبعة الثانية). مطبعة معهد ماساتشوستس للتكنولوجيا . الصفحات 253-272 ، 356-363 . ISBN 0-262-03293-7.
- جارك، دوان ج. (3 ديسمبر 2005). "اجتيازات الشجرة الثنائية" . تصورات تفاعلية لهياكل البيانات . جامعة ميريلاند . مؤرشف من الأصل في 27 فبراير 2014. تم الاسترجاع في 30 أبريل 2006 .
- كنوت، دونالد (1997). "6.2.2: البحث في الشجرة الثنائية". فن برمجة الحاسوب . المجلد 3: "الفرز والبحث" ( الطبعة الثالثة). أديسون-ويسلي. الصفحات 426-458 . ISBN 0-201-89685-0.
- لونغ، شون. "شجرة البحث الثنائية" ( عرض تقديمي ) . تصور هياكل البيانات والخوارزميات - نهج قائم على شرائح باوربوينت . جامعة ولاية نيويورك في أونونتا .
- بارلانتي، نيك (2001). "الأشجار الثنائية" . مكتبة تعليم علوم الحاسوب . جامعة ستانفورد . مؤرشف من الأصل بتاريخ 30 يناير 2022.
روابط خارجية
- بن بفاف: مقدمة في أشجار البحث الثنائية والأشجار المتوازنة . (ملف PDF؛ 1675 كيلوبايت) 2004.
- تصور شجرة البحث الثنائية
- الأشجار الثنائية
- شجرة البحث
