Двійкова послідовність довжини просто впорядкована послідовність х 1 , ... , х п , так що кожен х J є або 0 або 1 . Для того, щоб генерувати всі такі бінарні послідовності, можна використовувати очевидну структуру двійкового дерева таким чином: корінь "порожній", але кожному лівому дочірньому відповідає додавання 0 до існуючого рядка, а кожен правий дитина до 1 . Тепер кожна двійкова послідовність - це просто шлях довжиною n + 1, починаючи від кореня і закінчуючи на листі.
Ось моє запитання:
Чи можемо ми зробити краще, якщо лише хочемо генерувати всі двійкові рядки довжиною які мають точно n нулів і n ?
Під «чи можемо ми зробити краще», я маю на увазі, що ми повинні мати меншу складність, ніж дурний алгоритм, який спочатку будує все дерево вище, а потім намагається знайти ті шляхи з однаковою кількістю «лівого» та «правого» країв.