Как представить дерево с разделением в Haskell

Я хотел бы представить "дерево" следующей формы на языке Haskell:

   /\                            
  /\/\
 /\/\/\
/\/\/\/\
` ` ` ` `

/ и \ - ветви, а ` - листья. Вы можете видеть, что, начиная с любого узла, следуя по пути влево, затем вправо, вы попадаете в тот же узел, что и следуя по пути вправо, затем влево. Вы должны быть в состоянии обозначить листья, применить функцию двух потомков в каждом узле и распространить эту информацию к корню за время O(n^2). Мои наивные попытки дают экспоненциальное время выполнения. Есть подсказки?

16
задан Aza 15 April 2013 в 03:14
поделиться