Я бы сказал, что это зависит от того, что вы хотите сделать со структурой данных.
Вы можете использовать тот факт, что выражения Mathematica сами по себе являются деревьями.
Если релевантны только конечные узлы, используйте вложенные списки, например, {{1, {2, 3}}, 4}
. Если другой узел тоже должен нести некоторые данные, вы можете использовать что-то вроде этого:
tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]]
Смотри структуру так:
{{1, {2, 3}}, 4} // TreeForm
tree[1][tree[2][a, b], tree[3][c, tree[4][d, e]]] // TreeForm
Следующий вопрос - как реализовать алгоритм X для такой структуры данных.