نمایش نتایج 1 تا 9 از 9

نام تاپیک: ایجاد درخت با لیست پیوندی

  1. #1

    Unhappy ایجاد درخت با لیست پیوندی

    سلام.صبح همه بخیر.من میخوام یک درخت رو با لیست پیوندی پیاده سازی کنم.(جستجوی best first search) اما توی کلاس bfs اجازه تعریف اشاره گر از نوع bfsNode رو بهم نمیده.لطفا راهنمایی ام کنید.

    1.JPG

  2. #2
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,646

    Post نقل قول: ایجاد درخت با لیست پیوندی

    این چه نوع نوشتن Struct ِ ، منم بودم اجازه نمی دادم

  3. #3

    نقل قول: ایجاد درخت با لیست پیوندی

    نقل قول نوشته شده توسط ROSTAM2 مشاهده تاپیک
    این چه نوع نوشتن Struct ِ ، منم بودم اجازه نمی دادم
    خب من اینو توی کلاس گذاشتمش و درست شد.اما حالا یه مشکل بزرگتر دارم:
    میخواهم درخت جستجوی BFS رو با لینک لیست پیاده سازی کنم.میشه یه توضیحی بدین که توی حلقه ی while اینکار رو میشه کرد یا نه؟یعنی هر بار بفهمیم که child ای وجود داره یانه و اگه وجود داره اونو توی لینک لیست درج کنبم؟

  4. #4
    کاربر دائمی آواتار Davidd
    تاریخ عضویت
    آذر 1392
    محل زندگی
    تهران
    پست
    391

    نقل قول: ایجاد درخت با لیست پیوندی

    تعريف كلاس bfs كاملا اشتباهه. شما بايد براي درخت كلاس بسازي و الگوريتم bfs روي درخت اجرا بشه. فيلدهاي top , left , ... براي چي هست؟ تو درخت (باينري) هر نود يك فرزند چپ و يك فرزند راست داره ( درخت غيرباينري يك ليست فرزند داره).
    اين يك كلاس و الگوريتم bfs براي درخت باينري :
     class TreeNode
    {
    public TreeNode(int data) { this.data = data; }
    public int data;
    public TreeNode Left;
    public TreeNode Right;
    }


    TreeNode t = new TreeNode(10);
    t.Left = new TreeNode(5);
    t.Right = new TreeNode(11);
    t.Left.Left = new TreeNode(3);


    Queue<TreeNode> childs = new Queue<TreeNode>();
    childs.Enqueue(t);
    while (childs.Count>0)
    {
    TreeNode temp = childs.Dequeue();

    //print temp.data
    if (temp.Left!=null)
    {
    childs.Enqueue(temp.Left);
    }
    if (temp.Right != null)
    {
    childs.Enqueue(temp.Right);
    }

  5. #5

    نقل قول: ایجاد درخت با لیست پیوندی

    خیلی ممنون.چون هر گره حداکثر4تا فرزند داره که در 4 جهتش هستند(پازل8) من leftNode و ... رو در نظر گرفتم.درست متوجه نشدم.لیستی از فرزندان یعنی چجوری؟میشه یه کد واسش بنویسید؟

  6. #6
    کاربر دائمی آواتار Davidd
    تاریخ عضویت
    آذر 1392
    محل زندگی
    تهران
    پست
    391

    نقل قول: ایجاد درخت با لیست پیوندی

    نقل قول نوشته شده توسط azita90 مشاهده تاپیک
    خیلی ممنون.چون هر گره حداکثر4تا فرزند داره که در 4 جهتش هستند(پازل8) من leftNode و ... رو در نظر گرفتم.درست متوجه نشدم.لیستی از فرزندان یعنی چجوری؟میشه یه کد واسش بنویسید؟
    اگه يك درخته كه هر نود حداكثر 4 تا فرزند داره كد بالارو ميتوني راحت تغيير بدي ( من نميتونم درختي تصور كنم كه يك فرزند بالا، پايين، چپ و راست داشته باشه چون تبديل به گراف ميشه)
    class TreeNode
    {
    public TreeNode(int data) { this.data = data; }
    public int data;
    public TreeNode Child1;

    public TreeNode Child2;
    public TreeNode Child3;
    public TreeNode Child4;

    }

    TreeNode t=// نودها را به درخت اضاف كنيد
    Queue<TreeNode> childs = new Queue<TreeNode>();
    childs.Enqueue(t);
    while (childs.Count>0)
    {
    TreeNode temp = childs.Dequeue();

    //print temp.data
    if (temp.Child1!=null)

    {
    childs.Enqueue(temp.Child1);

    }
    if (temp.Child2!= null)

    {
    childs.Enqueue(temp.Child2);

    }
    if (temp.Child3!=null)
    {
    childs.Enqueue(temp.Child3);

    }
    if (temp.Child4!= null)

    {
    childs.Enqueue(temp.Child4);

    }

  7. #7

    نقل قول: ایجاد درخت با لیست پیوندی

    ممنون از توضیحاتتون.من مبتدی ام و تاحالا نه درخت ساختم و نه با صف کارکردم! تقریبا فهمیدم کدتون چیکار می کنه اما میشه لطف کنید و نحوه عملکرد خط13 ب بعد رو یه توضیحی بدین؟
    میشه لطف کنید و بگید چجوری بایدبه فرزندان ریشه ، فرزند اضافه کنم؟یعنی آیا باید توی یک حلقه while چک کنم که آیا به وضعیت هدف (توی پازل8) رسیدم یا نه و اگه نرسیده بودم ، یک عمق دیگه به درخت اضافه کنم.درسته؟

  8. #8
    کاربر دائمی آواتار Davidd
    تاریخ عضویت
    آذر 1392
    محل زندگی
    تهران
    پست
    391

    نقل قول: ایجاد درخت با لیست پیوندی

    خب با اين اوصاف من هرچي هم توضيح بدم باز شما تو مرحله بعدش ميموني. من از پازل 8 و كاربرد bfs توي پازل 8 چيزي نميدونم.
    روش ساخت درخت و اضافه كردن ريشه با مقدار 5 :
    TreeNode t=new TreeNode(5);

    اضافه كردن يك نود به عنوان فرزند اول ريشه با مقدار فرضي 2:
    t.Child1=new TreeNode(2);

    اضافه كردن فرزند دوم به فرزند اول ريشه :
    t.Child1.Child2=new TreeNode(3);


    توضيح خط 13 به بعد! ابتدا ريشه به صف اضافه ميشه. توي حلقه while يك نود از صف خارج ميشه و پردازش ميشه (مثلا چاپ مقدار نود) و سپس چنانچه اين نود فرزندي داشته باشد، فرزندادن به ترتيب به صف اضافه مي شوند. اين روند تا زماني كه تمام نودها پردازش شوند(صف خالي شود) ادامه مي يابد.

  9. #9

    نقل قول: ایجاد درخت با لیست پیوندی

    ممنون از لطفتون! حالا کاملا متوجه شدم. موفق باشید!

تاپیک های مشابه

  1. اشکال در یک برنامه با لیست پیوندی
    نوشته شده توسط hassan_kahrizy در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 5
    آخرین پست: یک شنبه 09 آذر 1393, 12:58 عصر
  2. سوال: کمک برای چگونه ایجاد کردن link در جاوا برای لیست پیوندی
    نوشته شده توسط java88 در بخش برنامه‌نویسی جاوا
    پاسخ: 6
    آخرین پست: سه شنبه 22 بهمن 1392, 21:55 عصر
  3. سوال: راهنمایی در مورد ایجاد یک لیست پیوندی به طول کل حافظه Ram با کامپایلر 32 بیتی
    نوشته شده توسط BORHAN TEC در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 1
    آخرین پست: جمعه 29 بهمن 1389, 11:07 صبح
  4. سوال: مشکل با ایجاد یک لیست پیوندی
    نوشته شده توسط shaki_phd در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 21 آذر 1388, 22:45 عصر
  5. سوال: درخت دودویی با لیست پیوندی(گرافیکی)
    نوشته شده توسط mohammadnkh در بخش C#‎‎
    پاسخ: 0
    آخرین پست: شنبه 17 مرداد 1388, 22:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •