public void posorden(nodo A)
 {
     if (A != null)
     {
         posorden(A.izq);
         posorden(A.der);
         MessageBox.Show(A.dato.ToString(), "Mostrando Dato");
     }
 }
예제 #2
0
        public Form1()
        {
            InitializeComponent();
            ad = new ArbolDibuja(ptb);
            nodo A = new nodo();

            A            = null;
            lborden.Text = "2";
            alturas.Add(0);
            alturas.Add(1);
            alturas.Add(0);
            alturas.Add(0);
        }
 public void preorden(nodo A)
 {
     MessageBox.Show(A.dato.ToString(), "Mostrando ");
     preorden(A.izq);
     preorden(A.der);
 }
        public void inserta_nodo(nodo A, nodo padre, int valor, int rama)
        {
            ptb.Image = (Image)b;
            g         = Graphics.FromImage(b);
            if (A == null)
            {
                A      = new nodo();
                A.dato = valor;
                A.izq  = null;
                A.der  = null;
                if (raiz == null)
                {
                    raiz = A;
                    g.DrawString(A.dato.ToString(), new Font("Comic Sans", 15, FontStyle.Bold), new SolidBrush(Color.Black), raizX, raizY);
                    A.posx = raizX;
                    A.posy = raizY;
                    g.DrawEllipse(new Pen(Color.Black, 1), A.posx - 5, A.posy, 30, 30);
                }
                else
                {
                    if (rama == 1)
                    {
                        A.posx    = padre.posx - despX;
                        A.posy    = padre.posy + despY;
                        padre.izq = A;
                        g.DrawString(A.dato.ToString(), new Font("Comic Sans", 15, FontStyle.Bold), new SolidBrush(Color.Black), A.posx, A.posy);
                        g.DrawEllipse(new Pen(Color.Black, 1), A.posx - 5, A.posy, 30, 30);
                        g.DrawLine(new Pen(Color.Black, 2), padre.posx, padre.posy, A.posx, A.posy);
                    }

                    else if (rama == 2)
                    {
                        A.posx    = padre.posx + despX;
                        A.posy    = padre.posy + despY;
                        padre.der = A;
                        g.DrawString(A.dato.ToString(), new Font("Comic Sans", 15, FontStyle.Bold), new SolidBrush(Color.Black), A.posx, A.posy);
                        g.DrawEllipse(new Pen(Color.Black, 1), A.posx + 5, A.posy, 30, 30);
                        g.DrawLine(new Pen(Color.Black, 1), padre.posx, padre.posy, A.posx, A.posy);
                    }
                    if (despX >= 60)
                    {
                        despX -= 20;
                    }
                }
            }
            else
            {
                if (valor < A.dato)
                {
                    inserta_nodo(A.izq, A, valor, 1);
                }
                else if (valor > A.dato)
                {
                    inserta_nodo(A.der, A, valor, 2);
                }
                else
                {
                    MessageBox.Show("Dato duplicado ");
                }
            }
        }