/// <summary>
        /// Finds the data node.
        /// </summary>
        /// <returns>
        /// The data node.
        /// </returns>
        /// <param name='Root'>
        /// Root.
        /// </param>
        /// <param name='ys'>
        /// Ys.
        /// </param>
        /// <param name='x'>
        /// X.
        /// </param>
        /// <exception cref='Exception'>
        /// Represents errors that occur during application execution.
        /// </exception>
        public static VDataNode FindDataNode(VNode Root, double ys, double x)
        {
            VNode C = Root;

            do
            {
                if (C is VDataNode)
                {
                    return(C as VDataNode);
                }

                VEdgeNode cEdge = C as VEdgeNode;
                if (cEdge == null)
                {
                    throw new Exception("Can't cast to edge node");
                }
                if (cEdge.Cut(ys, x) < 0)
                {
                    C = C.Left;
                }
                else
                {
                    C = C.Right;
                }
            } while(true);
        }