Это домашняя работа?
Простой способ представить произвольную древовидную структуру, IMHO, состоял бы в том, чтобы представить каждый узел как что-то вроде:
tree(Data,[ChildNode_1,...,ChildNode_n]).
Листовые узлы будут выглядеть так:
tree(Data,[]).
Бинарное дерево, будучи слегка специализированным, может выглядеть как
tree(Data,LeftChild,RightChild).
с атомом nil, представляющим несуществующий дочерний узел, поэтому его конечные узлы будут выглядеть как
tree(Data,nil,nil).
И узел только с левым потомком, такой как
tree(Data,LeftChild,nil).
Данные узла могут быть любой произвольной структуры. Возможно, вы хотите, чтобы это была пара ключ / значение:
tree(kvp(Key,Value),ChildNodes).