Написать функцию printWords(dict) для вывода слов в консоль в алфавитном порядке из с дерева — словаря. Ключами словаря могут быть только английские буквы a-z.
Функция не должна использовать внешние переменные и должна возвращать корректный результат при многократном использовании.
Длина слов может быть очень большой, поэтому рекурсивное решение использовать нельзя, только итерационное.
const dict1 = { f: { o: { o: null } } };
printWords(dict1); // ‘foo’;
const dict2 = {
a: {
c: {
t: null,
},
p: {
p: {
e: {
n: {
d: null,
}
},
l: {
e: null,
}
}
}
}
}
printWords(dict2); // ‘act’, ‘append’, ‘apple’;
Пример кода реализации на javascript
function printWords (obj) { const root = {}; (function tree (obj, index) { const suffix = toString.call(obj) == '[object Array]' ? ']' : '' for (const key in obj) { if (!obj.hasOwnProperty(key)) continue root[index + key + suffix] = obj[key] if (toString.call(obj[key]) == '[object Array]')tree(obj[key], index + key + suffix + '[') if (toString.call(obj[key]) == '[object Object]')tree(obj[key], index + key + suffix) } })(obj, '') const array = [] for (const [key, value] of Object.entries(root)) { if (value === null) { array.push(key) } } return array.sort((a, b) => a.localeCompare(b)) }