PDA

View Full Version : سوال: سوال در مورد ایجاد درخت در سی شارپ



parvizmo
چهارشنبه 05 بهمن 1390, 00:08 صبح
سلام به همگی
میخواستم روشهای ایجاد درخت در سی شارپ رو یاد بگیرم اما هیچ کتاب و سایتی پیدا نکردم که درست و حسابی در این مورد توضیح داده باشه
از دوستان هرکی بلده خدا خیرش بده بهم یاد بده که خیلی نیاز دارم
اگر هم فایل آموزشی دارین لطفا به این آدرس ایمیل کنید
parviz.geinar@gmail.com

mp_mp353
چهارشنبه 05 بهمن 1390, 06:38 صبح
سلام دوست من نمیدونم این به دردت میخره یا نه. مال دو سال پیشه که نوشتم البته شاید بدردت نخوره
81414

fireforget5
یک شنبه 28 اسفند 1390, 23:33 عصر
سلام اگه میشه در مورد روش برنامه هم توضیح بدین چون درست روش کارتون رو متوجه نشدم

mp_mp353
جمعه 11 فروردین 1391, 12:12 عصر
روش کار کردن برنامه یا کار کردن با اون؟؟

sony1983
جمعه 30 تیر 1391, 19:42 عصر
با درود برنامه شما مرتب سازی هیپ بود و نمایش همون درخت دوستمون حالت کلی رو میخواستند که اینطور میشه
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{


public Form1()
{
InitializeComponent(); // set up form

}


private void button2_Click(object sender, EventArgs e)//اضافه به راست
{
if (button2.Text == "Add")//اگر مقدار باتن دو برابر با اد شد
{

t.AddNode(textBox1.Text, p, true,2);

textBox1.Text = null;
button3.Enabled = button2.Enabled = false;


}
if (button2.Text == ">>")
{
if (p.right != null)
p = p.right;
label1.Text = p.data;
if (p.left== null)
button3.Text = "Add";
else
button3.Text = "<<";
if (p.right == null)
button2.Text = "Add";
else
button2.Text = ">>";

}

}


Tree t;

private void Form1_Load(object sender, EventArgs e)
{
t = new Tree();
label1.Text = null;
label2.Text = null;

label3.Text = null;

label4.Text = null;

label5.Text = null;
label6.Text = null;

label7.Text = null;

}
node p;
private void button1_Click(object sender, EventArgs e)
{
p = t.getroot();
if (p == null)
{
t.AddNode(textBox1.Text, null, true, 1);
textBox1.Text = null;
}
else
{
button2.Enabled = button3.Enabled = true;
if (p.left == null)
button3.Text = "Add";
else
button3.Text = "<<";
if (p.right == null)
button2.Text = "Add";
else
button2.Text = ">>";
label1.Text = p.data;

}


}

private void button3_Click(object sender, EventArgs e)
{
if (button3.Text == "Add")
{

t.AddNode(textBox1.Text, p, true,1);

textBox1.Text=null;
button3.Enabled=button2.Enabled=false;

}
if (button3.Text == "<<")
{
if (p.left != null)
p = p.left;
label1.Text = p.data;

if (p.left == null)
{
button3.Text = "Add";

}
else
button3.Text = "<<";
if (p.right == null)
{
button2.Text = "Add";

}

else
button2.Text = ">>";


}

}

private void button4_Click(object sender, EventArgs e)
{
node r = t.getroot();
label2.Text = "تعداد گره ها";
int temp = tedadnode(r);
label2.Text += temp.ToString();
label3.Text = "پیمایش پسوندی =";
pasvandi(r);
label4.Text = "پیمایش میانوندی =";
Mianvandi(r);
label5.Text = "پیمایش عرضی =";
Arzi(r);
label6.Text = "پیمایش عمقی =";

omghi(r);
label7.Text = "پیمایش پیشوندی =";
pishvandi(r);
}

private void pishvandi(node r)
{
if (r != null)
{
label7.Text += r.data;
label7.Text += ",";

pishvandi(r.left);
pishvandi(r.right);

}
}

private void omghi(node r)
{
List<node> l = new List<node>();
l.Add(r);
while (l.Count > 0)
{
int end = l.Count - 1;
label6.Text += l[end].data;
label6.Text += ",";


if (l[end].right != null)
l.Add(l[end].right);
if (l[end].left != null)
l.Add(l[end].left);

l.RemoveAt(end);

}



}

private void Arzi(node r)
{
List<node> l = new List<node>();
l.Add(r);
while (l.Count > 0)
{
label5.Text += l[0].data;
label5.Text += ",";
if (l[0].left != null)
l.Add(l[0].left);
if (l[0].right != null)
l.Add(l[0].right);
l.RemoveAt(0);
}


}

private void Mianvandi(node r)
{
if(r!=null)
{
Mianvandi(r.left);
label4.Text+=r.data;
label4.Text += ",";
Mianvandi(r.right);
}
}

private void pasvandi(node r)
{
if (r != null)
{

pasvandi(r.left);
pasvandi(r.right);
label3.Text += r.data;
label3.Text += ",";
}

}

private int tedadnode(node r)
{
if (r == null)
return 0;
if (r.left == null & r.right == null)
return 1;
else
return 1 + tedadnode(r.left) + tedadnode(r.right);
}
}
public class node
{
public string data;
public node left, right;
public node(string d)
{
data = d;
left = right = null;
}



}
public class Tree
{
node root;
public Tree()
{
root = null;
}
public void AddNode(string d, node p, bool b,int x)
{
node q = new node(d);
if (p == null)
root = q;
else

if (b)
if(x==1)
p.left = q;
else
p.right = q;
}
public node getroot()
{
return root;
}





}
}

توضیحاتی در زمینه های مختلف این برنامه میخوام که ممنون میشم راهنمایی بفرمایید

mp_mp353
جمعه 30 تیر 1391, 20:13 عصر
ردمورد کدوم قسمت های این کد؟ میشه بگید؟

sony1983
شنبه 31 تیر 1391, 08:27 صبح
با درود و تشکر
مثل سه خط بال که تو کامنت توضیحاتی جلوی هر خط نوشته میخواستم کلا در مورد قسمت هاس برنامه همچین توضیحی داشته باشم اگه این لطفو واسم بکنین بسیار سپاسگذارتونم

mp_mp353
شنبه 31 تیر 1391, 17:24 عصر
سلام دوست عزیز در اولین فرصت که سرم خلوت تر شد سعی میکنم برای شما این کار رو انجام بدم.

sony1983
یک شنبه 01 مرداد 1391, 15:33 عصر
من فردا تحویل پروژه دارم.ممنون میشم تا امشب بذارین .خیلی ممنونم