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