///<summary>Преобразует объект подробного решения в
    ///html строку</summary>
    public string ToHtml(StepByStepNTreeNode sbs)
    {
        // у нас корень дерева и его child Nodes
        // на самом деле находятся на одном уровне =>
        // преобразуем корень отдельно:
        string res = SingleStepToHtml(sbs.Cmnts, sbs.Expr);

        // теперь проходим по всем потомкам данного
        // узла и преобразуем их:
        for (int i = 0; i < sbs.ChildNodes.Count; i++)
        {
            res += ToHtmlInner(sbs.ChildNodes[i]);
        }

        // возвращаем результат:
        return(res);
    }
    ///<summary>Рекурсивная функция для преобразования всех внутренних
    ///шагов в html формат</summary>
    string ToHtmlInner(StepByStepNTreeNode sbs)
    {
        // результат:
        string res = "";

        // будем обходить дерево снизу =>
        // "забуряемся" вниз дерева:
        for (int i = 0; i < sbs.ChildNodes.Count; i++)
        {
            // получается childNodes - это вложенные решения:
            res += "<div class='inner-step'>";
            res += ToHtmlInner(sbs.ChildNodes[i]);
            res += "</div>";
        }

        // тут, получается мы уже в самом низу дерева
        // больше нет никаких потомков => начинаем обработку
        // текущего узла:
        res += SingleStepToHtml(sbs.Cmnts, sbs.Expr);

        // возвращаем результат:
        return(res);
    }