السحّاب

السحّاب

متوسط

التعليمات

إنشاء سحّاب لشجرة ثنائية.

السحّابات أسلوب وظيفي بحت للتنقل داخل بنية بيانات والتلاعب بها. وهي تحتوي في جوهرها على بنية بيانات ومؤشر داخل تلك البنية (يُسمى التركيز).

على سبيل المثال، إذا كانت لدينا شجرة ورد (تحتوي كل عقدة فيها على قيمة ومصفوفة من العقد الفرعية)، فقد يدعم السحّاب العمليات التالية:

  • from_tree (استخراج سحّاب من شجرة ورد، حيث يكون التركيز على العقدة الجذرية)
  • to_tree (استخراج شجرة الورد من السحّاب)
  • value (الحصول على قيمة عقدة التركيز)
  • prev (نقل التركيز إلى العقدة الفرعية السابقة للأب نفسه، وإرجاع سحّاب جديد)
  • next (نقل التركيز إلى العقدة الفرعية التالية للأب نفسه، وإرجاع سحّاب جديد)
  • up (نقل التركيز إلى العقدة الأب، وإرجاع سحّاب جديد)
  • set_value (ضبط قيمة عقدة التركيز، وإرجاع سحّاب جديد)
  • insert_before (إدراج شجرة فرعية جديدة قبل عقدة التركيز، فتصبح هي prev لعقدة التركيز، وإرجاع سحّاب جديد)
  • insert_after (إدراج شجرة فرعية جديدة بعد عقدة التركيز، فتصبح هي next لعقدة التركيز، وإرجاع سحّاب جديد)
  • delete (إزالة عقدة التركيز وكل الأشجار الفرعية، وانتقال التركيز إلى العقدة next إن أمكن، وإلا إلى العقدة prev إن أمكن، وإلا إلى العقدة الأب، وإرجاع سحّاب جديد)
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Roc Exercism

مستعد لبدء السحّاب؟

سجّل في Exercism لتتعلّم وتتقن Roc عبر 120 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.