خريطة النجاة والتميز 🗺️

زبدة المنهج بناءً على مسح دماغي شامل

🧠

أولاً: ماذا يجب أن "تفهم"؟ (الفهم العميق)

🔗 Logic of Pointers

تخيلها كسلاسل حديدية تربط الصناديق. فهمك لكيفية قطع السلسلة وربطها بمكان آخر هو جوهر الإضافة والحذف في القوائم والأشجار.

🪆 Recursion

دمية "ماتريوشكا". الدالة تفتح دالة أصغر حتى تصل للـ $Base Case$ ثم تعود لتغلق الدمى وتجمع النتائج ($Return$).

⚖️ Tree Rotations

في AVL، تخيل الشجرة كميزان مختل. التدوير هو عملية "ميكانيكية"؛ نرفع عقدة وننزل أخرى لاستعادة الاتزان.

🎖️ Divide and Conquer

استراتيجية الجنرالات. لا تحارب الجيش كاملاً (Array)، قسمه لكتائب صغيرة، اهزم كل كتيبة، ثم اجمعهم للنصر النهائي.

📦 LIFO vs FIFO

Stack: مثل مخزن رصاص المسدس (آخر رصاصة تدخل هي أول رصاصة تخرج).
Queue: مثل طابور "البيك" (أول واحد يصل هو أول واحد يطلب).

💾

ثانياً: ماذا يجب أن "تحفظ"؟ (الحفظ الصم)

خصائص الأشجار

BST: اليسار أصغر، اليمين أكبر.
Heap: الأب دائماً أكبر (Max) أو أصغر (Min) من أبنائه.

المصطلحات الرياضية

Leaf: عقدة بدون أبناء. | Root: العقدة الأولى.
Height: من الورقة للأعلى. | Depth: من الجذر للأسفل.

معادلات الـ Index (Heap)
Left: $2i$ ⇠ Parent: $\lfloor i/2 \rfloor$ ⇢ Right: $2i+1$
📟

ثالثاً: فك شفرات الرموز والاختصارات

الرمز / الاختصار المعنى (Meaning) الاستخدام
NSize of Inputحجم البيانات (عدد العناصر في المصفوفة).
O(f(n))Big-O (Upper Bound)أسوأ سيناريو للوقت (سقف الأداء).
$\Omega(f(n))$Big-Omega (Lower Bound)أفضل سيناريو للوقت (أرضية الأداء).
$\Theta(f(n))$Big-Theta (Tight Bound)متوسط الأداء (تطابق السقف والأرضية).
BSTBinary Search Treeشجرة بحث مرتبة لتسريع البحث.
AVLBalanced Treeشجرة توازن ذاتي تضمن ارتفاع $O(\log N)$.
MSTMin Spanning Treeأقل تكلفة لربط كل النقاط.
DAGDirected Acyclic Graphرسم موجه بدون دورات (للطوبولوجي).
LIFO/FIFOStack/Queue Logicطريقة دخول وخروج البيانات.
🎓

رابعاً: وضع "البروفيسور" (Exam Simulation)

🅰️ Hot Topics (Modules 1-5)

  • Big-O Calculation: حلقات متداخلة (غالباً $O(N^2)$).
  • Stack Ops: ماذا يتبقى في المكدس؟ أو تحويل Infix لـ Postfix.
  • Linked List: سطر كود مفقود لربط عقدة (`.next`).

Modules 6-13 (70%)

  • AVL Balance: تحديد نوع الدوران بعد الإدخال.
  • Hashing: أين سيقع الرقم باستخدام Linear Probing؟
  • Sorting Tracing: شكل المصفوفة بعد دورتين (2 passes).
  • Graphs/Heaps: مسار Dijkstra، وماذا يصبح الجذر بعد deleteMin؟

⚠️ الفخاخ المنصوبة (Traps)

  • فخ الـ Index: في Circular Queue الزيادة هي $(rear+1) \% size$.
  • فخ الـ Heap: اليمين ليس بالضرورة أكبر من اليسار، فقط الأب هو المتحكم.
  • فخ البداية: عمق الجذر ($Root$) هو 0 والارتفاع لعقدة وحيدة هو 0.
  • فخ الاستقرار: Merge Sort مستقر، أما Quick/Heap فلا.

🕵️‍♂️ حيل الـ MCQs (Hacks)

  • حيلة القسمة: حلقة تتضاعف ($*2$) أو تتقسم ($/2$) تعني أن الجواب فيه $\log N$.
  • حيلة الترتيب: Pre-order يبدأ بالجذر، Post-order ينتهي بالجذر.
  • حيلة Postfix: الضرب والقسمة أقوى؛ BC* ستكون قطعة واحدة ملتصقة.
  • حيلة الـ AVL: خلل خط مستقيم = دوران واحد. خلل متعرج = دوران مزدوج.
📝

خامساً: الأسئلة المقالية المتوقعة

س1: تتبع Dijkstra للأقصر مسار؟

السر في الجدول. ارسم جدولاً بأعمدة: $(Vertex, Known, Distance, Path)$. وحدث المسافات في كل خطوة.

س2: Hashing (Linear Probing) للأرقام 12, 22, 42؟

12 $\to$ خانة 2 (تم). | 22 $\to$ خانة 2 (مشغول) $\to$ جرب 3 (تم). | 42 $\to$ خانة 2 (مشغول) $\to$ 3 (مشغول) $\to$ جرب 4 (تم).

س3: كود حساب عدد العقد (Recursion)؟

int countNodes(Node root) {
    if (root == null) return 0;
    return 1 + countNodes(root.left) + countNodes(root.right);
}

سادساً: الجدول المقدس (The Ultimate Table)

Data Structure / Algo Average Case Worst Case ملاحظة ذهبية
Search in ArrayO(N)O(N)إذا كانت غير مرتبة
Binary SearchO(log N)O(log N)بشرط المصفوفة مرتبة
Search in BSTO(log N)O(N)تسوء إذا مالت الشجرة (Skewed)
Search in AVLO(log N)O(log N)لأنها متوازنة دائماً
Merge SortO(N log N)O(N log N)مضمون، مستقر وسريع
Quick SortO(N log N)O(N^2)الأسوأ عند اختيار Pivot سيء
Insertion SortO(N^2)O(N^2)تصل لـ $O(N)$ لو كانت مرتبة
🚀 العودة للفهرس الرئيسي والمتابعة