You are on page 1of 5

‫بسم ال الرحمن الرحيم‬

‫اليوم اقدم لطلب مستوى ثاني بكلية الحاسب اللي شرح كامل لزيارة الشجرة وطباعة محتوياتها باستخدام‬
‫الـ ‪. Non-Recursive‬‬
‫طبعاً الكل يعرف بان البرامج التي يتم صنعها باستخدام الـ ‪ Non-Recursive‬تكون اكو ادهها طويلة‬
‫ولكن وقت التنفيذ يكون سريع اسرع من البرامج التي يتم صنعها باستخدام الـ‪Recursive‬‬

‫طبعاً لقد شرحت الزيارة باستخدام الـ‪ Recursive‬في الكتاب السابق ‪.‬‬
‫سوف استخدم هنا الزيارة باستخدام الـ‪preorder‬‬

‫لدينا الخوارزمية التالية‪:‬‬

‫‪)Preorder)Tree*root‬‬ ‫هنا قمنا بتعريف مؤشر من نوع ‪ Tree‬وذالك لكي نستخدمه عند‬
‫{‬ ‫التنقل في الشجرة تفادياً لضياع الشجرة‬
‫‪;Tree*p=root‬‬
‫يتم استخدامه لعملية ‪ loop‬حتى يتم طبع الشجرة بأكملها‬
‫‪)While)True‬‬ ‫او كما يقال يقوم بدور الـ ‪(Recursive‬الستدعاء)‬
‫{‬
‫‪)while)p‬‬ ‫طالما الـ‪ p‬موجودة (طالما الـ ‪ p‬يشير الى ‪) node‬‬
‫{‬
‫‪)Display)p->info‬‬
‫‪)push)stk,p‬‬ ‫يقوم بوضع عنوان الـ ‪ p‬داخل الـ ‪stk‬‬
‫‪;p=p->left‬‬
‫}‬ ‫يقوم بنقل الـ ‪ p‬الى الـ ‪ node‬الذي في اليسار‬
‫‪))if)not empty)stk‬‬
‫{‬
‫‪)p=pop)stk‬‬ ‫يقوم باخراج اخر عنوان في الـ‪ stk‬ووضع المؤشر ‪ p‬علية‬
‫‪;p=p->right‬‬
‫}‬ ‫يقوم بنقل الـ ‪ p‬الى الـ ‪ node‬الذي في اليمين‬
‫‪Else‬‬
‫‪Break‬‬
‫}‬ ‫يقوم بإيقاف الـ ‪ loop‬عند إلنتها من زيارة‬
‫}‬ ‫الشجرة كاملة‬
‫لدينا هذه الشجرة‬

‫‪A‬‬

‫‪B‬‬ ‫‪k‬‬

‫‪Z‬‬ ‫‪Y‬‬

‫‪N‬‬

‫‪F‬‬

‫ونريد زيارتها باستخدام الـ ‪ preorder‬عن طريق الخوارزمية السابقة‬

‫قبل ذالك يجب ان نعرف نقطه هامة وهي‪:‬‬


‫اننا سوف نستخدم الـ ‪ stuck‬لكي نحفظ بداخلة عناوين العناصر التي سوف يمر عليها المؤشر ‪P‬‬
‫هنا الـ ‪ P‬غير موجودة(‪ )P=NULL‬لذالك سوف يقوم بالتالي‪:‬‬ ‫‪p‬‬
‫‪P‬‬
‫‪p‬‬ ‫‪A 03‬‬
‫‪P‬‬
‫‪)Preorder)Tree*root‬‬
‫‪p‬‬ ‫‪B 04‬‬ ‫‪k 05‬‬
‫{‬ ‫‪p‬‬
‫‪;Tree*p=root‬‬ ‫‪Z 06‬‬ ‫‪Y 07‬‬ ‫‪P‬‬
‫‪P‬‬
‫‪)While)True‬‬ ‫‪N 08‬‬ ‫‪P P‬‬ ‫‪P‬‬
‫{‬ ‫‪P‬‬ ‫‪P‬‬
‫‪)while)p‬‬
‫‪P‬‬ ‫‪F 09‬‬
‫{‬
‫‪)Display)p->info‬‬
‫‪P‬‬
‫‪)push)stk,p‬‬
‫‪;p=p->left‬‬
‫}‬ ‫هنا سوف يتم ارجاع الـ‪ p‬الى اخر عنوان دخل الى‬
‫‪05‬‬
‫‪))if)not empty)stk‬‬ ‫الـ ‪ stk‬وذالك عن طريق عمل ‪ pop‬للـ‪stk‬‬
‫{‬
‫‪)p=pop)stk‬‬ ‫‪07‬‬
‫‪;p=p->right‬‬
‫}‬ ‫هنا الـ ‪ stk‬اصبحت فارغة‬ ‫‪09‬‬
‫‪Else‬‬ ‫لذالك سيقوم بالتالي‬
‫‪08‬‬
‫‪Break‬‬
‫}‬ ‫هنا الـ‪ STK‬ليست فارغة‬ ‫‪06‬‬
‫لذالك سيقوم بما يلي‪:‬‬
‫}‬
‫هنا الـ‪ STK‬ليست فارغة‬ ‫‪04‬‬
‫لذالك سيقوم بما يلي‪:‬‬
‫‪03‬‬
‫‪A B Z N F Y K‬‬ ‫وبهذا نكون طبعنا جميع عناصر الـ ‪ Tree‬كما هو ظاهر لنا‪:‬‬
‫‪stk‬‬
‫قام بشرح‬

‫•الطالب‪ /‬محمد راشد داود‬


‫•سنة ثانية ـــــــــــ المجموعة التاسعة‬
‫•شرح المحاضرة مستنبط من محاضرة الدكتور فضل باعلوي‬
‫•مع شكري الخاص وشكر المجموع التاسعة الى الدكتور فضل باعلوي‪.‬‬
‫‪:If you have any question or feeler pleas send to me by this email‬‬
‫‪mohammed2008_dawod@hotmail.com‬‬

You might also like