public void Insert(int valor)
 {
     if (valor <= this.Valor)
     {
         if (Izquierdo == null)
         {
             this.Izquierdo = new BinaryTree(valor);
         }
         else
         {
             Izquierdo.Insert(valor);
         }
     }
     else
     {
         if (Derecho == null)
         {
             this.Derecho = new BinaryTree(valor);
         }
         else
         {
             Derecho.Insert(valor);
         }
     }
 }
示例#2
0
 public void Insert(U valor)
 {
     if (comparacion(valor, Valor))
     {
         if (Izquierdo == null)
         {
             Izquierdo = new BinaryTree <U>(valor, comparacion);
         }
         else
         {
             Izquierdo.Insert(valor);
         }
     }
     else
     {
         if (Derecho == null)
         {
             Derecho = new BinaryTree <U>(valor, comparacion);
         }
         else
         {
             Derecho.Insert(valor);
         }
     }
 }
        public int[] ToArray()
        {
            var temp = new int[0];

            int[] resultado = new int[0];
            if (this.Izquierdo != null)
            {
                var izqArr = Izquierdo.ToArray();
                resultado = izqArr;
            }

            temp = new int[resultado.Length + 1];
            resultado.CopyTo(temp, 0);
            var valArr = new int[] { this.Valor };

            valArr.CopyTo(temp, resultado.Length);
            resultado = temp;

            if (this.Derecho != null)
            {
                var derArr = Derecho.ToArray();
                temp = new int[derArr.Length + resultado.Length];
                resultado.CopyTo(temp, 0);
                derArr.CopyTo(temp, resultado.Length);
            }

            resultado = temp;

            return(resultado);
        }
 public Nodo Agregar(int valor)
 {
     if (valor < Dato)
     {
         Izquierdo = Izquierdo?.Agregar(valor) ?? new Nodo(valor);
     }
     else
     {
         Derecho = Derecho?.Agregar(valor) ?? new Nodo(valor);
     }
     return(this);
 }
示例#5
0
        public override int Evaluar()
        {
            switch (Valor)
            {
            case "+":
                return(Izquierdo.Evaluar() + Derecho.Evaluar());

            case "*":
                return(Izquierdo.Evaluar() * Derecho.Evaluar());
            }

            return(Int32.Parse(Valor));
        }
示例#6
0
        public override int Resultado()
        {
            switch (Valor)
            {
            case "+":
                return(Izquierdo.Resultado() + Derecho.Resultado());

            case "*":
                return(Izquierdo.Resultado() * Derecho.Resultado());
            }

            return(Int32.Parse(Valor));
        }
示例#7
0
    public U BinarySearch(U obj)
    {
        new object();

        if (obj.Equals(Valor))
        {
            return(Valor);
        }

        if (comparacion(obj, Valor) && Izquierdo != null)
        {
            return(Izquierdo.BinarySearch(obj));
        }
        else if (Derecho != null)
        {
            return(Derecho.BinarySearch(obj));
        }

        throw new Exception();
    }
 public void Recorrer()
 {
     Izquierdo?.Recorrer();
     Console.WriteLine($" - {Dato}");
     Derecho?.Recorrer();
 }