شرح عملية اضافة نوود الى شجرة +مادة هياكل بيانات

Download Report

Transcript شرح عملية اضافة نوود الى شجرة +مادة هياكل بيانات

‫بسم هللا الرحمن الرحيم‬
‫اخواني الطلبه اليوم راح اشرح لكم عمليه اساسيه تتم في‬
‫الشجرة(‪)Tree‬‬
‫الـ ‪Insert‬‬
Insert
Insert(Tree*root,Tree*n)
{
Tree*p=root;
if(root not found)
root=n;
Else
{
while(p)
{
if(p->info<n->info)
{
if(p->right)
p=p->right;
else
{
p->right=n;
break;
} }
else
Tree ‫ من نوع‬n ‫ و‬root ‫هنا قمنا بتعريف‬
‫ ثم ساويناه‬Tree ‫ من نوع‬p ‫عرفنا مؤشر جديد اسميناه‬
‫ وذالك الستخدامه في التنقل في الشجرة‬root ‫بـ‬
else
{
if(p->info>n->info)
{
if(p->left)
p=p->left;
else
p->left=n;
break;
}
}
}
}
n->left=n->right=NULL;
}
‫االن راح اقوم بشرح عمل الخوارزميه بتفصيل‬
‫‪p‬‬
‫الـ ‪ n‬هي عباره عن العدد الذي نريد ادخاله الى الشجرة‬
‫ولنفترض باننا نريد ادخال الـ ‪ 95‬الى الشجرة‬
‫‪root‬‬
‫‪p‬‬
‫‪50‬‬
‫‪100‬‬
‫‪90‬‬
‫‪95‬‬
‫‪p‬‬
‫‪40‬‬
‫‪20‬‬
‫هذا الشرط يفحص اذا كانت الشجرة موجودة‬
‫(تكون الشجرة موجودة عندما يكون الروت موجود)‬
‫فاذا تحقق ولم يكن الروت موجود فيقوم بوضع العنصر‬
‫موجودهموجود من قبل‬
‫اي الروت‬
‫‪NULL‬كان‬
‫روت واذا‬
‫نريد‪p‬ادخال‬
‫الذي‬
‫ليست بـ‬
‫طالما الـ‬
‫بالتالي‪:‬‬
‫يقوم بتنفيذيقوم‬
‫الذي يليه‬
‫معلومات‬
‫معلومات‬
‫من من‬
‫اصغر‬
‫اصغر‬
‫النود ‪p‬‬
‫النود ‪p‬‬
‫معلومات‬
‫معلومات‬
‫هل هل‬
‫هل معلومات النود ‪ p‬اصغر من معلومات‬
‫يمين النود‬
‫الى عن‬
‫الىالتي‬
‫النود‬
‫هل‬
‫الشجرة‬
‫الشجرة‬
‫ادخالها‬
‫ادخالها‬
‫نريدنريد‬
‫التيالتي‬
‫ال ‪n‬ال ‪n‬‬
‫‪30‬ال ‪ n‬التي نريد ادخالها الى الشجرة‬
‫الـ ‪p‬‬
‫يشير‬
‫موجودة‪50‬‬
‫‪90‬‬
‫معلوماتها‬
‫معلوماتها‬
‫اليهاالتي‬
‫التي‬
‫النود‬
‫النود‬
‫التيالى‬
‫الى‬
‫تشير‬
‫فإن ‪p‬ال ‪p‬تشير‬
‫فإن ال‬
‫نالحظ‬
‫نالحظ‬
‫كما كما‬
‫كما نالحظ فإن ال ‪ p‬تشير الى النود التي معلوماتها ‪100‬‬
‫يليه‬
‫الشرطالذي‬
‫بتنفيذ‬
‫وبتالييقوم‬
‫موجودة‬
‫نريدنريداذا‬
‫محقق‬
‫محقق‬
‫الشرط‬
‫فإن فإن‬
‫وبتالي‬
‫‪95 95‬‬
‫كانت هو‬
‫ادخاله‬
‫ادخاله هو‬
‫الذيالذي‬
‫العنصر‬
‫العنصر‬
‫بينمابينما‬
‫بينما العنصر الذي نريد ادخاله هو ‪ 95‬وبتالي فإن الشرط غير محقق‬
‫يليهيليه‬
‫الذيالذي‬
‫بتنفيذ‬
‫بتنفيذ‬
‫يقوميقوم‬
‫ولذالك‬
‫ولذالك‬
‫ولذالك يقوم بتنفيذ االومر التي بعد ‪else‬‬
‫هنا كما نالحظ بان النود التي على يمين النود‬
‫التي يشير اليها الـ ‪ p‬غير موجودة ولذالك سوف‬
‫يقوم بتنفيذ االوامر التي تلي ‪ else‬تبع الشرط‬
‫هل معلومات النود ‪ p‬اكبر من معلومات‬
‫شمال النود‬
‫التي عن‬
‫ال ‪ n‬التي نريدهل‬
‫الشجرة‬
‫النود الى‬
‫ادخالها‬
‫موجودة‬
‫اليها الـ ‪p‬‬
‫كما نالحظ فإن ال ‪ p‬تشيرالتي‬
‫‪100‬‬
‫معلوماتها‬
‫يشير التي‬
‫الى النود‬
‫الذي يليه‬
‫يقومفإنبتنفيذ‬
‫موجودة‬
‫كانت‬
‫بينما العنصر الذي نريد اذا‬
‫محقق‬
‫الشرط‬
‫وبتالي‬
‫هو ‪95‬‬
‫ادخاله‬
‫ولذالك يقوم بتنفيذ الذي يليه‬
‫يقوم بايقاف الوب‪loop‬‬
‫)‪Insert(Tree*root,Tree*n‬‬
‫{‬
‫;‪Tree*p=root‬‬
‫)‪if(root not found‬‬
‫;‪root=n‬‬
‫‪else‬‬
‫{‬
‫)‪while(p‬‬
‫{‬
‫)‪if(p->info<n->info‬‬
‫{‬
‫)‪if(p->right‬‬
‫;‪p=p->right‬‬
‫‪else‬‬
‫{‬
‫;‪p->right=n‬‬
‫;‪break‬‬
‫} }‬
‫‪else‬‬
‫{‬
‫)‪if(p->info>n->info‬‬
‫{‬
‫)‪if(p->left‬‬
‫;‪p=p->left‬‬
‫‪else‬‬
‫;‪p->left=n‬‬
‫;‪break‬‬
‫} } } }‬
‫;‪n->left=n->right=NULL‬‬
‫}‬
‫المصدر‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫قام بشرح هذا الموضوع ‪:‬‬
‫الطالب‪:‬محمد راشد صالح داود‪.‬‬
‫المجموعة ‪:‬التاسعه‪.‬‬
‫هذا الشرح مستنبط من محاضرة الدكتور‪:‬فضل باعلوي‪.‬‬
‫اقدم شكري الخاص وشكر المجموعه التاسعه ومستوى ثاني بشكل عام الى‬
‫الدكتور فضل باعلوي ‪.‬‬
‫أي استفسار ‪[email protected]‬‬