--- title: Trees localeTitle: الأشجار --- # الأشجار يمكن تعريف بنية بيانات الأشجار بشكل متكرر (محلي) كمجموعة من العقد (تبدأ من عقدة جذر) ، حيث تكون كل عقدة عبارة عن بنية بيانات تتكون من قيمة ، مع قائمة مراجع للعقد ("الأطفال") ، مع القيود التي لا تتكرر أي إشارة ، ولا شيء يشير إلى الجذر. تسمى الشجرة بدون العقد بالشجرة الخالية أو الفارغة. الشجرة الثنائية هي بنية بيانات غير خطية تتكون من العقد ، حيث تحتوي كل عقدة على المكونات الثلاثة التالية: **عنصر البيانات** : يخزن أي نوع من البيانات في العقدة **مؤشر يسار** : **يشير** إلى الشجرة الفرعية على الجانب الأيسر من العقدة **المؤشر الأيمن** : **يشير** إلى الشجرة الفرعية على الجانب الأيمن من العقدة كما يوحي الاسم ، يخزن عنصر البيانات أي نوع من البيانات في العقدة. تشير مؤشرات اليسار واليمين إلى الأشجار الثنائية على الجانب الأيمن والأيسر من العقدة على التوالي. إذا كانت الشجرة فارغة ، يتم تمثيلها بمؤشر فارغ. ## المصطلحات المستخدمة في الأشجار: **الجذر** : العقدة العليا في شجرة. **الطفل** : عقدة متصلة مباشرة بعقدة أخرى عند الانتقال بعيدًا عن الجذر. **الوالد** : الفكرة العكسية للطفل. **الأشقاء** : مجموعة من العقد مع نفس الوالد. **السليل** : يمكن الوصول إلى العقدة من خلال إجراء متكرر من الوالد إلى الطفل. **السلف** : يمكن الوصول إلى العقدة من خلال إجراء متكرر من الطفل إلى الوالد. **الفرع** (العقدة الداخلية): عقدة لشجرة لها عقد فرعية. **ورقة** (أقل شيوعا تسمى العقدة الخارجية): عقدة بدون أطفال. **الدرجة العلمية** : عدد الألواح الفرعية لعقدة. **الحافة** : الاتصال بين عقدة واحدة وأخرى. **المسار** : تسلسل من العقد والحواف التي تربط العقدة مع سليل. **المستوى** : يتم تعريف مستوى العقدة بواسطة 1 + (عدد الاتصالات بين العقدة والجذر). **ارتفاع الشجرة** : ارتفاع الشجرة هو ارتفاع العقدة الجذرية الخاصة بها. **العمق** : عمق العقدة هو عدد الحواف من العقدة الجذرية للشجرة إلى العقدة. **غابة** : الغابة هي مجموعة من الأشجار المنفصلة n ≥ 0. ### بعض أنواع الأشجار الشائعة: * شجرة ثنائية * شجرة البحث الثنائية * شجرة AVL * أحمر أسود شجرة * شجرة Splay * شجرة هوفمان ### الاستخدامات الشائعة * تمثل البيانات الهرمية * تخزين البيانات بطريقة تجعلها سهلة البحث * تمثل قوائم مرتبة من البيانات * خوارزميات التوجيه ### رمز عقدة شجرة \`\` \`c\_cpp العقدة الهيكلية { بيانات int؛ // عنصر البيانات العقدة الهيكلية \* اليسار ؛ // المؤشر إلى العقدة اليسرى العقدة الهيكلية \* // المؤشر إلى العقدة اليمنى }؛ \`\` \` #### معلومات اكثر: * [ملاحظات CMU الدرس](http://www.cs.cmu.edu/~clo/www/CMU/DataStructures/Lessons/lesson4_1.htm) * [ويكيبيديا](https://en.wikipedia.org/wiki/Tree_(data_structure))