You are on page 1of 37

Computer & Automation Engineering

Data Structure & Algorithms

»‫بنية البيانات «األشجار‬


TREES DATA STRUCTURE
‫مقدمة – مصطلحات‬
)Binary Tree( ‫الشجرة الثنائية‬

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com)


‫مقدمة‪:‬‬
‫❑ األشجار بنية بيانات ديناميكية‪ :‬ألنها قادرة على تمثيل العالقات بين الكائنات‬
‫بدقة في مشاكل العالم الحقيقي‪.‬‬
‫ُ‬
‫❑ األشجار (‪ :)trees‬هي بنية بيانات غير خطية واملكونة من العقد (‪)nodes‬‬
‫واألقواس (‪.)arcs‬‬
‫❑ بنية بيانات غير خطية‪:‬‬
‫✓ تماثل التنظيم الطبيعي للبيانات‪)Web( ،)Data base( ،)GUI( ،)File Structures( :‬‬
‫✓ العالقات بين الكائنات «هرمية (‪»)hierarchical‬‬
‫✓ تسمح بتنفيذ مجموعة من الخوارزميات أسرع بكثير من استخدام هياكل البيانات‬
‫الخطية‪.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪2‬‬
‫املصطلحات الرئيسية‬
:‫ وهي‬،‫تأتي من شجرة العائلة‬
‫)؛‬descendant) "‫ و"السليل‬،)ancestor) "‫ و"السلف‬،)Child) "‫ و"اإلبن‬،)parent) "‫"األب‬

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 3


‫املصطلحات الرئيسية‬
‫العقدة الجذر‬

‫السلف‬ ‫عُقد داخلية‬

‫العقدة األب‬

‫أشقاء‬
‫حافة‬

‫العقدة اإلبن‬
‫(الخلف)‬ ‫مسار‬

‫عُقد خارجية‬
‫(أوراق)‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪4‬‬
‫أمثلة عن األشجار‬

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 5


‫‪1‬‬ ‫بنية البيانات «األشجار» (‪)Trees Data Structure‬‬
‫ُ‬ ‫ُ‬ ‫ُ‬
‫❑ تعرف الشجرة (‪ )T‬بأنها مجموعة من العقد التي تخزن العناصر ضمن عالقة‪:‬‬
‫( أب – إبن ) وفق الخواص واملصطلحات التالية‪:‬‬
‫إذا كانت (‪ )T‬غير خالية؛ فإنها تملك عقدة خاصة تسمى الجذر (‪ )Root‬والتي ليس‬ ‫‪(1‬‬
‫لها أب‪.‬‬
‫كل عقدة (‪ )v‬من الشجرة (‪ )T‬غير العقدة الجذر؛ لها عقدة أب وحيدة )‪ ،)w‬وكل‬ ‫‪(2‬‬
‫عقدة لها العقدة األب (‪ )w‬تدعى العقدة اإلبن للعقدة (‪.)w‬‬
‫ُ‬
‫تدعى العقدتين اللتين لهما األب نفسه باألشقاء (‪.)siblings‬‬ ‫‪(3‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪6‬‬
‫‪2‬‬ ‫بنية البيانات «األشجار» (‪)Trees Data Structure‬‬
‫ُ‬ ‫ُ‬
‫جية (‪ )external node‬إذا لم يكن لها عقد‬
‫ً‬ ‫ر‬ ‫الخا‬ ‫بالعقدة‬ ‫)‬ ‫‪v‬‬‫(‬ ‫العقدة‬ ‫دعى‬ ‫ت‬ ‫‪(4‬‬
‫ر‬ ‫ُ‬
‫أبناء‪ ،‬وتسمى العقد الخارجية أيضا باألو اق (‪.)leaves‬‬
‫ُ‬
‫العقد األبناء فتدعى عقدة داخلية‬‫العقد التي لديها واحد أو أكثر من ُ‬
‫ُ‬ ‫‪(5‬‬
‫(‪.)Internal node‬‬
‫تكون العقدة (‪ )v‬سلف للعقدة (‪ )u‬إذا كان‪:‬‬ ‫‪(6‬‬
‫▪ (‪ )v=u‬أو‬
‫▪ (‪ )v‬هي سلف العقدة األب للعقدة (‪.)u‬‬
‫ً‬
‫▪ وبالعكس تكون العقدة (‪ )v‬نسل العقدة (‪ )u‬إذا كانت العقدة (‪ )u‬سلفا للعقدة (‪.)v‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪7‬‬
‫‪3‬‬ ‫بنية البيانات «األشجار» (‪)Trees Data Structure‬‬
‫الحافة (‪ )edge‬من الشجرة (‪ )T‬هي زوج من العقد ( ‪ )u , v‬حيث أن العقدة‬ ‫‪(7‬‬
‫(‪ )u‬هي أب للعقدة (‪.)v‬‬
‫املسار(‪ )path‬من الشجرة (‪ )T‬هوسلسلة من العقد املتتالية‪ ،‬حيث كل‬ ‫‪(8‬‬
‫عقدتين متتاليتين من السلسلة تشكالن حافة‪.‬‬
‫الشجرة املرتبة (‪ :)Ordered Tree‬نقول أن الشجرة مرتبة إذا كان هناك‬ ‫‪(9‬‬
‫ترتيب خطي ما محدد ألبناء كل عقدة‪.‬‬
‫❑ الترتيب يعبر عن عالقة خطية بين ُ‬
‫العقد األبناء بحيث يمكن وضعهم ضمن‬
‫سلسلة مرتبة‪.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪8‬‬
ُ
»‫مثال هيكلية الكتاب «شجرة مرتبة‬
Book

Title Abstract Chapter 1 Chapter 2 Chapter 3 References

Section Section Section Section Section Section Section


1.1 1.2 2.1 2.2 2.3 3.1 3.2

Section Section Section Section Section


1.1.2 2.2.1 2.2.1 3.2.1 3.2.1

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 9


‫‪1‬‬ ‫مصطلحات عددية في الشجرة‬
‫❑ عمق الشجرة (‪:)depth‬‬
‫✓ لتكن العقدة (‪ )p‬من الشجرة (‪)T‬؛ فإن عمق العقدة (‪ )p‬هوعدد أسالف هذه‬
‫العقدة باستثناء العقدة (‪ )p‬نفسها‪.‬‬
‫❑ إرتفاع الشجرة (‪:)height‬‬
‫ُ‬
‫✓ لتكن العقدة (‪ )p‬من الشجرة (‪)T‬؛ فإن إرتفاع العقدة (‪ )p‬يعرف بشكل عودي‬
‫كما يلي‪:‬‬
‫• إذا كانت العقدة (‪ )p‬هي عقدة خارجية فإن إرتفاع العقدة (‪ )p‬هو الصفر‪.‬‬
‫• وإال فإن‪ :‬إرتفاع العقدة (‪ + 1 = )p‬اإلرتفاع األعلى للعقد األبناء للعقدة (‪.)p‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪10‬‬
‫‪2‬‬ ‫مصطلحات عددية في الشجرة‬
‫الشجرة املتوازنة (‪:)Balancing Tree‬‬ ‫❑‬
‫نقول أن الشجرة (‪ )T‬متوازنة (‪ )balanced‬إذا كان إرتفاع كل شجرة جزئية منها إما يساوي الصفر أو‬ ‫✓‬
‫الواحد‪.‬‬
‫عدد أبناء العقدة‪:‬‬ ‫❑‬
‫العقد للشجرة (‪،)T‬‬‫ليكن (‪ )n‬هوعدد ُ‬
‫‪෍ 𝑪𝒑 = 𝒏 − 1‬‬ ‫✓‬

‫𝒑‬ ‫وليكن (𝒑𝑪) يرمز لعدد العقد األبناء للعقدة (‪ )p‬من الشجرة (‪)T‬؛ عندئذ‪:‬‬ ‫✓‬

‫عامل التفرع (‪:)Branch factor‬‬ ‫❑‬


‫عامل التفرع للشجرة (‪ )T‬هوعدد العقد األبناء لكل عقدة من هذه الشجرة (‪ .)T‬وإذا كانت هذه القيمة‬ ‫✓‬
‫ليست موحدة‪ ،‬يكون عامل التفرع هواملتوسط الحسابي ألعداد العقد األبناء لعقد هذه الشجرة (‪.)T‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪11‬‬
)Binary Tree( ‫الشجرة الثنائية‬

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 12


‫تعريف الشجرة الثنائية‬
‫هي شجرة فيها لكل عقدة منها عقديتين أبناء على األكثر « أي عقدتين أو عقدة واحدة‬ ‫❑‬
‫أو بدون عقد أبناء »‪ ،‬وتسمى إحدى ُ‬
‫العقد األبناء‬
‫باإلبن اليساري (‪ )left child‬واآلخر باإلبن اليميني (‪.)right child‬‬

‫‪NULL‬‬ ‫‪NULL‬‬ ‫‪NULL‬‬ ‫‪NULL‬‬


‫اإلبن اليساري‬ ‫اإلبن اليميني‬ ‫اإلبن اليساري‬ ‫اإلبن اليميني‬
‫(‪)left child‬‬ ‫(‪)right child‬‬ ‫(‪)left child‬‬ ‫(‪)right child‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪13‬‬
‫الجذر(‪)Root‬‬ ‫عقدة داخلية‬
‫عقدة خارجية (ورقة)‬
‫العقد‬
‫الداخلية‬
‫والخارجية‬
‫(األوراق)‬
‫لشجرة‬
‫ثنائية‪.‬‬
‫عدد األوراق هو امليزة الهامة لألشجار‬
‫الثنائية‪ ،‬والذي ُيستخدم في تقييم‬
‫كفاءة أداء خوارزميات الفرز‪.‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪14‬‬
‫المستوى (‪)0‬‬
‫شجرة‬
‫ثنائية‬
‫المستوى (‪)1‬‬
‫كاملة‬
‫المستوى (‪)2‬‬
‫بالعمق‬
‫من‬
‫المستوى (‪)3‬‬ ‫املستوى‬
‫المستوى (‪)4‬‬
‫الرابع‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪15‬‬
‫الشجرة الثنائية الكاملة‬
‫❑ مستوى العقدة الجذر يساوي الصفر‪.‬‬
‫❑ مستوى العقدة (‪ )p‬من الشجرة (‪ = )T‬واحد ‪ +‬مستوى العقدة األب للعقدة (‪.)p‬‬
‫ً‬
‫❑ لكل عقدة (ليست من األوراق) منها عقديتين أبناء تماما‪،‬‬
‫❑ جميع األوراق في الشجرة الثنائية الكاملة تقع في نفس املستوى‪.‬‬
‫❑ عدد األوراق ألي شجرة ثنائية كاملة = عدد العقد الداخلية ‪ +‬واحد‬
‫❑ عدد العقد في كل مستوى ( 𝒊 ) من الشجرة الثنائية الكاملة ُيعطى بالعالقة‪𝒊 :‬‬
‫𝟐‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪16‬‬
‫الشجرة الثنائية الكاملة – إحصائيات رقمية‬
‫‪10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫املستوى ( 𝒊 )‬
‫‪1024‬‬ ‫‪512‬‬ ‫‪256‬‬ ‫‪128 64‬‬ ‫‪32‬‬ ‫‪16‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫عدد العقد في املستوى‬
‫‪2047‬‬ ‫‪1023‬‬ ‫‪511‬‬ ‫‪255 127‬‬ ‫‪63‬‬ ‫‪31‬‬ ‫‪15‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫عدد العقد الكلي للشجرة‬
‫‪1023‬‬ ‫‪511‬‬ ‫‪255‬‬ ‫‪127 63‬‬ ‫‪31‬‬ ‫‪15‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫عدد العقد غيراألوراق‬
‫‪1024‬‬ ‫‪512‬‬ ‫‪256‬‬ ‫‪128 64‬‬ ‫‪32‬‬ ‫‪16‬‬ ‫‪8‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫عدد العقد األوراق‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪17‬‬
‫أمثلة عن استخدام الشجرة الثنائية‬

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 18


‫أشجارالقرار)‪)Decision Trees‬‬
‫❑ فئة مهمة من األشجار الثنائية والتي تستخدم لتمثيل عدد من النتائج املختلفة‬
‫التي يمكن أن تنجم عن اإلجابة على مجموعة من األسئلة التي تملك إحدى‬
‫الجوابين فقط نعم أوال )‪.)Yes or No questions‬‬
‫❑ ترتبط كل عقدة داخلية بسؤال‪ ،‬وتكون العقد الخارجية إما نعم أو ال‪.‬‬
‫‪XOR - truth table‬‬
‫)‪:‬‬ ‫‪XOR‬‬‫(‬ ‫الدالة‬ ‫لدينا‬ ‫ذلك‬ ‫على‬ ‫وكمثال‬ ‫❑‬

‫‪A‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬


‫‪B‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬
‫‪C‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪(A xor B) xor C‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪19‬‬
1 - )XOR( ‫ الشجرة الثنائية للدالة‬:‫مثال‬
XOR - truth table

A 1 1 1 1 0 0 0 0
B 1 1 0 0 1 1 0 0
C 1 0 1 0 1 0 1 0
(A xor B) xor C 1 0 0 1 0 1 1 0

A =1
B
=1 The decision
C

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 20


2 - )XOR( ‫ الشجرة الثنائية للدالة‬:‫مثال‬
A
1 0

B B
1 0 1 0

C C C C
1 0 1 0 1 0 1 0

Yes No No Yes No Yes Yes No

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 21


‫مثال عن أشجارالقرار‬
‫ً‬
‫وفقا ملجموعة من القواعد ذات الشكل العام‪:‬‬
‫)… ‪IF (… condition …) THEN (… Action‬‬
‫ً‬
‫لتكن لدينا مجموعة القواعد التالية والتي تساعدنا في إتخاذ قرار عن نوع طائرة وفقا‬ ‫❑‬
‫ملواصفاتها‪.‬‬
‫ً‬ ‫القواعد‪:‬‬ ‫❑‬
‫‪ (1‬إذا كان نوع محرك الطائرة مر ًوحيا‪ ،‬فإن الطائرة هي ‪C130.‬‬
‫الطائرة هي ‪B747.‬‬ ‫ً‬
‫نفاثا وكان موضع الجناح منخفضا‪ ،‬فإن‬ ‫‪ (2‬إذا كان نوع محرك الطائرة‬
‫ً‬ ‫ً‬ ‫ً‬
‫مرتفعا ولم يكن بارزا‪ ،‬فإن الطائرة هي‬ ‫‪ (3‬إذا كان نوع محرك الطائرة نفاثا وكان موضع الجناح‬
‫ً‬ ‫ً‬ ‫‪C5A.‬‬
‫ً‬
‫مرتفعا وكان بارزا‪ ،‬فحينئذ الطائرة‬ ‫‪ (4‬إذا كان نوع محرك الطائرة نفاثا‪ ،‬وكان موضع الجناح‬
‫هي ‪C141.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪22‬‬
Engine Type

Jet Propeller
‫شجرة القرار‬
Wing Position C130
‫إلتخاذ قرارعن‬
Low High ‫نوع طائرة وفقا‬
B747 Bulges
‫لقواعد‬
None Aft Wing
)if …. then …..(
C5A C141

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 23


‫تمثيل التعابيرالرياضية‬
‫(‪)Arithmetic Expression Representation‬‬
‫❑ يمكن تمثيل التعابير الحسابية والتي تتكون من العمليات‬
‫‪/‬‬ ‫الثنائية األساسية باستخدام األشجار الثنائية‪ ،‬حيث أن‪:‬‬
‫‪6‬‬ ‫‪+‬‬ ‫✓ العقد الخارجية (األوراق) تتضمن قيم املتغيرات أو الثوابت‪،‬‬
‫✓ كل عقدة داخلية تتضمن إحدى العمليات الرياضية األساسية‬
‫‪1‬‬ ‫‪2‬‬ ‫وهي‪ :‬الضرب والقسمة والجمع والطرح ( * ‪،)- , + , / ,‬‬
‫✓ تكون قيمة العقدة هي ناتج تطبيق العملية على القيم املوجودة في‬
‫ابناءها‪.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪24‬‬
{[((3+1)×3)/((9−5)+2)]−[(3×(7−4))+6]} ‫تمثيل التعبيرالرياض ي‬
((((3+1)×3)/((9−5)+2))−((3×(7−4))+6)) -

((3+1)×3)/((9−5)+2) / (3×(7−4))+6) +

((3+1)×3)  ((9−5)+2) + (3×(7−4))  6

(3+1) + 3 (9−5) - 2 3 - (7−4)

3 1 9 5 7 4

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 25


‫شجرة البحث الثنائية‬
)Binary Search Tree)

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 26


‫شجرة البحث الثنائية )‪)Binary Search Tree‬‬
‫❑ شجرة البحث الثنائية هي شجرة ثنائية تمتلك‬
‫الخاصية التالية‪:‬‬
‫✓ من أجل أي عقدة (‪ )n‬من الشجرة يكون؛‬
‫الشجرة‬ ‫الشجرة‬ ‫‪ .A‬كل القيم املخزنة في ُعقد الشجرة الجزئية اليسارية (أي‬
‫الجزئية‬ ‫الجزئية‬ ‫الشجرة الجزئية التي عقدة الجذر لها هي األبن اليساري)‬
‫اليسارية‬ ‫اليمينية‬
‫تكون أصغر من القيمة املخزنة في هذه العقدة‪،‬‬
‫‪ .B‬وكل القيم املخزنة في ُعقد الشجرة الجزئية اليمينية أكبر من‬
‫القيمة املخزنة في هذه العقدة‪.‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪27‬‬
‫ أمثلة‬- ‫شجرة البحث الثنائية‬
12

7 33
B N

1 8 26 78
F R

41 85 P

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 28


‫تنفيذ أشجارالبحث الثنائية بلغة (‪ – )C++‬الفئة األولى‬
‫ُ‬
‫❑ يتم تعريف الفئة أولى )‪ )BSTNode‬أي فئة العقد حيث أن‪:‬‬
‫✓ العقدة هي مثيل لهذه الفئة تتألف من‪:‬‬
‫• عضو املعلومات (الغرض)‪.‬‬
‫• عضوين كل منهما مؤشر إلى عقدة من الشجرة؛ بمحدد وصول خاص‬
‫(‪.)private‬‬
‫• باني افتراض ي وباني عادي بمحدد وصول عام )‪.)public‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪29‬‬
template<class T>
class BSTNode
el
‫تعريف الفئة‬
{
private: NULL NULL
)BSTNode)
T el;
BSTNode* left,
BSTNode* right;
public:
BSTNode() { left = 0; right = 0; }
BSTNode(const T& e, BSTNode* l = 0, BSTNode* r = 0)
{ el = e; left = l; right = r; }
};

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 30


‫تنفيذ أشجارالبحث الثنائية بلغة (‪ – )C++‬الفئة الثانية‬
‫ُ‬
‫❑ يتم تعريف فئة الثانية (‪ )BST‬تمثل الشجرة بكاملها‬
‫✓ «الشجرة مكونة من مجموعة عقد من الفئة األولى»‬

‫❑ تتألف الفئة (‪ )BST‬من‪:‬‬


‫ً‬ ‫ً‬ ‫ً‬
‫✓ عضوا بيانيا واحدا وهو عقدة من الفئة )‪ )BSTNode‬ويمثل جذر الشجرة؛‬
‫✓ األعضاء الدالية (العمليات األساسية) التي تعمل على الشجرة‪.‬‬

‫❑ يتم استخدام الفئة األولى ضمن األعضاء الدالية للفئة الثانية أي فئة الشجرة‪.‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪31‬‬
‫‪1‬‬
‫توصيفا مختصرا للعمليات األساسية التي تعمل على الشجرة‪.‬‬
‫اإلعادة‬ ‫املعلومات التي يحتاجها‬ ‫عمله‬ ‫العضوالدالي‬

‫قيمة منطقية‪ :‬بحال تم‬ ‫معلومات عن العقدة‬ ‫البحث عن عنصر‬


‫إيجاد العقدة أم ال‪.‬‬ ‫املطلوب البحث عنها‪.‬‬ ‫(عقدة) ما في الشجرة‪.‬‬
‫‪search‬‬
‫إقحام (إدراج أو إضافة)‬
‫العقدة الجديدة املطلوب‬
‫ال ش يء‬
‫إضافتها إلى الشجرة‪.‬‬
‫عقدة جديدة إلى‬ ‫‪insert‬‬
‫الشجرة‪.‬‬
‫معلومات عن العقدة‬
‫لحذف (فك ارتباط)‬
‫العقدة املحذوفة‬ ‫املطلوب حذفها من‬
‫عقدة من الشجرة‪.‬‬
‫‪delete‬‬
‫الشجرة‪.‬‬
‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪32‬‬
‫‪2‬‬
‫توصيفا مختصرا للعمليات األساسية التي تعمل على الشجرة‪.‬‬
‫اإلعادة‬ ‫املعلومات التي يحتاجها‬ ‫عمله‬ ‫العضوالدالي‬

‫اإلبحار (الوصول لكل‬


‫ال ش يء‬ ‫ال ش يء‬ ‫ُعقد الشجرة) بطريقة‬
‫ً‬
‫‪breadthFirst‬‬
‫اإلبحار بالعرض أوال‪.‬‬
‫اإلبحار (الوصول لكل‬
‫ال ش يء‬ ‫ال ش يء‬ ‫ُعقد الشجرة) بطريقة‬
‫ً‬
‫‪depthFirst‬‬
‫اإلبحار بالعمق أوال‪.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪33‬‬
‫‪3‬‬
‫توصيفا مختصرا للعمليات األساسية التي تعمل على الشجرة‪.‬‬
‫اإلعادة‬ ‫املعلومات التي يحتاجها‬ ‫عمله‬ ‫العضوالدالي‬

‫الشجرة املطلوب موازنتها‪،‬‬


‫ال ش يء‬
‫وقيمتين صحيحتين‪.‬‬
‫موازنة الشجرة‪.‬‬ ‫‪balance‬‬
‫ً‬
‫حذف الشجرة كليا من‬
‫ال ش يء‬ ‫ال ش يء‬
‫الذاكرة (تحرير الذاكرة)‪.‬‬
‫‪clear‬‬
‫قيمة منطقية‪:‬‬
‫فحص إذا ما كانت‬
‫بحال كانت الشجرة‬ ‫ال ش يء‬
‫الشجرة فارغة أم ال‪.‬‬
‫‪isEmpty‬‬
‫فارغة أم ال‪.‬‬

‫)‪Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com‬‬ ‫‪34‬‬
class BST
{
protected:
root ‫تعريف‬
BSTNode* root;
public:
NULL ‫الفئة‬
BST() { root = 0; }
void clear(); )BST(
bool isEmpty() const;
bool search( const ) const; ‫والتي تمثل‬
‫فئة‬
void breadthFirst();
void depthFirst();
void insert( const );
void delete ( BSTNode* );
void balance( BST* , int , int );
.‫الشجرة‬
};

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 35


‫تعريف العمليات األساسية التي تعمل‬
.‫على الشجرة‬
Next

Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 36


Data Structure and Algorithms - 2019 Dr. Aghiad Kh. (aghiad_kh@hotmail.com) 37

You might also like