--- title: B Trees localeTitle: الأشجار ب --- ## الأشجار ب # المقدمة B-Tree عبارة عن شجرة بحث ذات توازن ذاتي. في معظم أشجار البحث عن التوازن الذاتي (مثل AVL و Red Black Trees) ، من المفترض أن كل شيء في الذاكرة الرئيسية. لفهم استخدام B-Trees ، يجب أن نفكر في كمية هائلة من البيانات التي لا يمكن احتواؤها في الذاكرة الرئيسية. عندما يكون عدد المفاتيح مرتفعًا ، تتم قراءة البيانات من القرص في شكل كتل. وقت الوصول للقرص مرتفع جدًا مقارنة بوقت الوصول الرئيسي للذاكرة. الفكرة الرئيسية لاستخدام B-Trees هي تقليل عدد مرات الوصول إلى القرص. تتطلب معظم عمليات الشجرة (البحث أو الإدراج أو الحذف أو الحد الأقصى أو الحد الأدنى أو ..) إدخال O (h) للقرص حيث h ارتفاع الشجرة. ب شجرة هي شجرة الدهون. يتم الاحتفاظ ارتفاع B-Trees منخفضة عن طريق وضع أقصى مفاتيح ممكنة في عقدة B-Tree. بشكل عام ، يتم الاحتفاظ حجم عقدة B-Tree مساوية لحجم كتلة القرص. بما أن h منخفض لـ B-Tree ، فإن إجمالي الوصول للقرص لمعظم العمليات يتم تقليله بشكل كبير مقارنةً بأشجار Binary Search المتوازنة مثل AVL Tree و Red Black Tree و ..etc. خصائص B-Tree: 1) جميع الأوراق في نفس المستوى. 2) يتم تعريف B-tree بالحد الأدنى من الدرجة 't'. تعتمد قيمة t على حجم كتلة القرص. 3) يجب أن تحتوي كل عقدة ما عدا الجذر على مفاتيح t-1 على الأقل. قد يحتوي الجذر على مفتاح 1 كحد أدنى. 4) جميع العقد (بما في ذلك الجذر) قد تحتوي على أكثر من 2t - 1 مفاتيح. 5) عدد أطفال العقدة يساوي عدد المفاتيح الموجودة به زائد 1. 6) يتم فرز جميع مفاتيح العقدة بترتيب متزايد. يحتوي الطفل بين مفتاحين k1 و k2 على كافة المفاتيح في النطاق من k1 و k2. 7) B-Tree ينمو وينكمش من الجذر الذي لا يشبه Binary Search Tree. أشجار البحث الثنائي تنمو إلى الأسفل وتقلص أيضًا من الهبوط. 8) مثل غيرها من الأشجار المتوازنة البحث ثنائي ، تعقيد الوقت للبحث ، وإدراج وحذف هو O (Logn). بحث: يشبه البحث البحث في Binary Search Tree. دع المفتاح ليتم البحث عنه ك. نبدأ من الجذر والعكس بشكل متكرر. لكل عقدة non-leaf التي تمت زيارتها ، إذا كان للعقدة مفتاح ، فإننا نعيد العقدة ببساطة. وإلا فإننا نتراجع إلى الطفل المناسب (الطفل الذي هو قبل المفتاح الأول الأكبر) للعقدة. إذا وصلنا إلى عقدة أوراق ولم نعثر على k في عقدة الورقة ، نرجع NULL. اجتياز: Traversal هو أيضا مماثل لاجتياز اجتياز شجرة ثنائية. نبدأ من الطفل الموجود في أقصى اليسار ، ونقوم بشكل متكرر بطباعة الطفل الموجود في أقصى اليسار ، ثم نكرر نفس العملية للأطفال والبقية المتبقين. في النهاية ، بشكل متكرر طباعة الطفل في أقصى اليمين.