// Вставка элемента в бинарное дерево поиска (без ребалансировки).
Data Tree['t]
{
Tree = c_leaf ++ Tree['t] * 't * Tree['t].c_node;
}

Scheme BinaryTree
{
// Elem * Tree -> Tree
Fun TreeInsert
{
@ = [2].~c_leaf -> (c_leaf * [1] * c_leaf).c_node,
[2].~c_node -> (([1]*[2].~c_node.[2]).less ->
(([1]*[2].~c_node.[1]).TreeInsert * [2].~c_node.([2]*[3])).c_node,
([2].~c_node.([1]*[2])*([1]*[2].~c_node.[3]).TreeInsert).c_node);
}

@ = (0*(9*(6*(1*(7*(3*(5*c_leaf).TreeInsert).TreeInsert).TreeInsert).TreeInsert).TreeInsert).TreeInsert).TreeInsert.print;
}

Application
% BinaryTree





Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.