Написать функцию 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))
}






