@Vignore

Какой использовать алгоритм?

На входе я имею json массив данных. В каждом элементе имеется id(string, not null), folder(bool), parentId(string)
На основе этих данных я должен составить дерево. Аналогия это -файловая система в проводнике windows(думаю как и в большинстве ОС).
Можете подсказать, как это реализовать или каким алгоритмом, или где посмотреть уже сделанное?
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Очень важный вопрос. Может ли содержимое папки попасться раньше, чем сама папка? Для простоты считаем, что нет, и что вы нашли библиотеку для JSON.
Нужны два объекта: дерево (самодельный) и словарь ID (map: id → развилка дерева).
Для каждого элемента…
1. По parent id через словарь находим, куда его впихнуть. Если не нашли — вывести ошибку.
2. Если folder: создать развилку, присвоить ID, вписать её в словарь ID.
3. Если не folder: создать лист, присвоить ID и вписать в словарь ID (если надо по какой-то другой причине).
Я плохо знаю Си с диезом, так что поправляйте меня.
class Node {
  List<Node> children;
  List<Leaf> leaves;
}

class Leaf {
  // в нём может быть что угодно
}

class Tree {
  Node root;
}

Tree tree;
Dictionary<string, Node> idDic;  // считается, что словарь нужен только на разбор JSON,
   // и он временный
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы