public static bool CompararValor(NodoArbolBinario nodoArbolBinario, int valor)
        {
            if (nodoArbolBinario == null)
            {
                return(false);
            }

            if (nodoArbolBinario.ObtenerValor() == valor || CompararValor(nodoArbolBinario.ObeterNodoIzquierda(), valor) ||
                CompararValor(nodoArbolBinario.ObeterNodoDerecha(), valor))
            {
                return(true);
            }

            return(false);
        }
        private static Resultado ObtenerAncestroComunMasCercano(NodoArbolBinario NodoArbol, int valor1, int valor2, NodoArbolBinario nodoPadre = null)
        {
            if (NodoArbol == null)
            {
                return(new Resultado());
            }

            Resultado result = new Resultado();

            if (NodoArbol.ObtenerValor() == valor1)
            {
                result.ExisteNodo1 = true;

                if (NodoArbol.ObeterNodoDerecha() != null && NodoArbol.ObeterNodoDerecha().ObtenerValor() == valor2)
                {
                    result.NodoArbol = nodoPadre;
                }
                else if (NodoArbol.ObeterNodoIzquierda() != null && NodoArbol.ObeterNodoIzquierda().ObtenerValor() == valor2)
                {
                    result.NodoArbol = nodoPadre;
                }
                else
                {
                    result.NodoArbol = NodoArbol;
                }
                return(result);
            }

            if (NodoArbol.ObtenerValor() == valor2)
            {
                result.ExisteNodo2 = true;
                if (NodoArbol.ObeterNodoDerecha() != null && NodoArbol.ObeterNodoDerecha().ObtenerValor() == valor1)
                {
                    result.NodoArbol = nodoPadre;
                }
                else if (NodoArbol.ObeterNodoIzquierda() != null && NodoArbol.ObeterNodoIzquierda().ObtenerValor() == valor1)
                {
                    result.NodoArbol = nodoPadre;
                }
                else
                {
                    result.NodoArbol = NodoArbol;
                }
                return(result);
            }

            Resultado resultadoIzquierda = ObtenerAncestroComunMasCercano(NodoArbol.ObeterNodoIzquierda(), valor1, valor2, NodoArbol);
            Resultado resultadoDerecha   = ObtenerAncestroComunMasCercano(NodoArbol.ObeterNodoDerecha(), valor1, valor2, NodoArbol);

            if (resultadoIzquierda.NodoArbol != null && resultadoDerecha.NodoArbol != null)
            {
                result.ExisteNodo2 = true;
                result.ExisteNodo1 = true;
                result.NodoArbol   = NodoArbol;
                return(result);
            }


            if (resultadoIzquierda.NodoArbol != null)
            {
                result.ExisteNodo1 = true;
                result.NodoArbol   = resultadoIzquierda.NodoArbol;
                return(result);
            }

            result.ExisteNodo2 = true;
            result.NodoArbol   = resultadoDerecha.NodoArbol;
            return(result);
        }