Спор по поводу бинарное или не бинарное дерево не так важен пока.
Сейчас думаю над тем как определить, что (x=y) & (y = z) & not (x = z) всегда False.
Кто как думает какой алгоритм и структуры данных нужны для этого.