سؤال س: باستخدام القاموس في لغة البايثون اكتب البرنامج المناسب لتمثيل هذه الشجرة، ثم أضف العقدة الأصل والعقد الفرعية.
الإجابة: س: باستخدام القاموس في لغة البايثون اكتب البرنامج... يُمثّل القاموس الشجرة بحيث يكون المفتاح = اسم العقدة، والقيمة = قائمة بالعُقد الفرعية (الأبناء). - مثال لتمثيل شجرة (عقدة أصل وأبناء ثم أبناء للأبناء) بصيغة قاموس: - A → [B, C] - - B → [D, E] - - C → [F, G] - - G → [] ، F → [] ، E → [] ، D → [] - - العقدة الأصل: A - العُقد الفرعية للعقدة الأصل: B ، C (ثم تُضاف بقية العُقد الفرعية كما في التمثيل أعلاه).
خطوات الحل:
- **الشرح:** لنفهم هذا السؤال. المطلوب هو كتابة برنامج بلغة بايثون يستخدم القاموس (Dictionary) لتمثيل شجرة (Tree). الفكرة هنا هي أن القاموس في بايثون يمكنه تمثيل العلاقات بين العقد في الشجرة، حيث يكون المفتاح (Key) هو اسم العقدة، والقيمة (Value) هي قائمة (List) تحتوي على أسماء العقد الفرعية (الأبناء) المرتبطة بتلك العقدة. لتمثيل شجرة، نبدأ بالعقدة الأصل (الجذر) ونحدد أبناءها، ثم نحدد أبناء كل عقدة فرعية، وهكذا. على سبيل المثال، إذا كانت العقدة الأصل هي 'A' ولها عقدتان فرعيتان هما 'B' و'C'، فإننا نكتب في القاموس: 'A': ['B', 'C']. ثم، إذا كانت العقدة 'B' لها عقدتان فرعيتان هما 'D' و'E'، نكتب: 'B': ['D', 'E']. نستمر بهذه الطريقة حتى نصل إلى العقد التي ليس لها أبناء (العقد الورقية)، حيث نضع لها قائمة فارغة مثل: 'D': []. إذن، لكتابة البرنامج، نقوم بإنشاء قاموس يمثل هذه العلاقات، ثم نضيف العقدة الأصل والعقد الفرعية كما هو موضح في المثال. البرنامج سيكون بسيطاً ويعتمد على تعريف القاموس وتعبئته بالبيانات المناسبة للشجرة المطلوبة.