الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح مثال بسيط

بدأه *cpu* في 25 مايو 2008 · 3 رد · 1,022 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

أتمنى منكم شرح بسيط لخطوات التنقل على

TREE

حتى افهم و خصوصا لأنها بالريكيرجن..

أرجوكم ..تعقدت من الريكيرجن مع التري

و هذا المثال واضح ..بس اتمنى اعرف وشلون تمشي الدالة

algorithm countLeaves (val tree <node pointer>)

Counts the number of leaves in a binary tree using recursion.

Pre tree is a pointer to a binary tree or subtree.

Post returns count of leaves in tree

1 if (tree is null)

1 return 0

2 end if

3 if (tree-left is null AND tree->right is null)

1 return 1

4 end if

5 return (countLeaves(tree->left)

+ countLeaves(tree->right))

end countLeaves

#2

جزاكم الله خيرا افيدوني

#3

يا أخى ال tree أصلا تسمى بال recursive data structure يعنى ال recursion خاصية من خواصها و بالتالى فهو الحل "السهل" عند تطبيق أى خوارزميات عليها.

طيب ليه recursive data structure ؟ لأن لو بصيت على الBinary tree من أول ال root node حتلاقيها إنها مكونة من 2 subtrees على اليمين و على الشمال, و بعدين حتلاقى ال 2 subtrees دول مكونين من 2 subtrees هما كمان و هكذا. لذلك مثلا فى عد ال leaves بتاعة ال tree, المنطقى إن عدد ال leaves فى ال tree حيساوى عدد ال leaves فى ال right subtree + عدد ال leaves فى ال left subtree, و علشان أعد ال leaves فى ال right sub or left sub حطبق "نفس القانون" دا تانى عليهم, لحد ما أوصل إلى leaf فعلا أقوم مرجع 1, تخيل ال function بتاعتك بتتفرع عند كل نود فى ال tree إلى فرعين و بتستنى الناتج اللى حيرجع من الفرعين دول تقوم مرجعه الناتج للتفرع اللى فوقها و هكذا لحد ما توصل لل root و حيبقى هو دا الناتج اللى إنتا عايزه.

#4

شكرا لك...ما قصرت

الله يجزاك بالجنة

مواضيع مشابهة