السلام عليكم ورحمة الله وبركاته
حالياً أعمل على مشروع Phonebook باستخدام الـ Binary Search Tree .
بالمرفقات تجدون الملفات. جميع الكلاسات كاملة ما عدا الكلاس الرئيسي Phonebook.java .
عندما أقوم بتشغيل البرنامج واختيار إضافة سجل جديد (new record) إلى دفتر العناوين لا تحدث اي مشكلة في المرة الأولى لكن في المرة الثانية تحدث المشكلة. المشكلة هنا هي أنه في أول مرة تكون الشجرة فارغة ولا تحتوي على أي نود (Node) لذا إضافتها ليس بها أية مشكلة، ولكن عند غضافة السجل الثاني يقوم البرنامج بعمل مقارنة بين السجل الجديد والسجل القديم لتحديد ما هو الـ (root) وما هو الـ (child) وهل هو على اليمين أم على اليسار.
الـ (Binary Search Tree) في مشروعي عام، لذلك استخدمت الـ generics، لذا يمكنني أمثل الـ (Node) بأي كلاس .. في مشروعي مثلته بالكلاس (Pair) والذي يحتوي على عنصرين (String name, String number).
المشكلة التي واجههتها هي عملية مقانة بين 2 (objects) بحيث أن الشجرة عامة وبالتالي ستتم المقارنة بين (two E types) .. بينما في مشروعي المقارنة ستتم بين (two Pairs) استناداً على الاسم (name) فقط.
أتمنى بأن تكون فكرة البرنامج قد وضحت، وأتمنى أيضاً بأن أجد من يساعدني في حل هذا الإشكال.
وشكراً.
"تم حذف المرفقات"
