Реализация вывода слов из дерева — словаря на js

реализация вывода слов из дерева - словаря на js Программирование на Javascript

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

 

Оцените статью
Компьютер для начинающих
Добавить комментарий