freeCodeCamp/guide/arabic/computer-science/data-structures/trees/index.md

72 lines
4.0 KiB
Markdown
Raw Normal View History

---
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))