كيف تتحقق إذا كانت هناك دائرة في شجرة؟
-
21-09-2019 - |
سؤال
هذه شجرة:
سيكون هناك جذر واحد.
كل عقدة شجرة لديها صفر أو أكثر من أطفال.
يسمح أن تشير العقدان إلى نفس الطفل. قل ، كلتا العقدة A والعقدة B لديها طفل C.
ومع ذلك ، يحظر ذلك ،
العقدة A هي ذرية من العقدة B ، والعقدة B هي نسل العقدة A.
حالة واحدة محظورة
العقدة A لديها عقدة طفل C والعقدة د ،
كل من العقدة C و D لديها عقدة طفل E ،
العقدة E لديها طفل من A.
والسؤال هو ، كيف تحدد هذه الدائرة بأسرع طريقة؟
تحديث: أدرك أن هذا هو العثور على أي دورة في رسم بياني موجه. لقد تمكنت الآن من التفكير في حل مشابه لخوارزمية تارجان.
شكرا للتعليقات.
المحلول
هل أ عمق البحث الأول من خلال الشجرة. إذا وجدت في أي وقت عقدة موجودة بالفعل في مكدس التراجع الخاص بك ، فهناك دائرة.
نصائح أخرى
يمكن العثور على الدوائر باستخدام 2 مؤشرات وتعزيزها على فترات زمنية مختلفة. في نهاية المطاف ، ستتطابق المؤشرات ، مما يشير إلى حلقة ، أو أن تصل إلى "أسرع" ثم تنتهي. عادة ما يتم طرح السؤال على القوائم المرتبطة ، وليس الأشجار.