Первое , что я думаю о том, когда я прочитал этот вопрос: какие типы вещей использовать графы / деревья? и я думаю , что в обратном направлении , как я мог бы использовать их.
Например, возьмем два общих использования дерева:
DOM и XML по этому вопросу, напоминают древовидные структуры.

Это имеет смысл, тоже. Это имеет смысл , так как нужно эти данные должны быть организованы . Файловая система тоже. В системе UNIX существует корневой узел, и ветвление вниз. При установке нового устройства, вы прикрепив ее на дерево.
Вы также должны спросить себя: ли данные попадают в этот тип структуры? Создание структуры данных, которые имеют смысл к проблеме, а остальные будут следовать.
Насколько быть проще, я думаю, вот родственник. Вы хорошо с рекурсивными функциями для обхода дерева / графа? Что делать, если вам нужно, чтобы сбалансировать дерево?
Подумайте о программе, которая решает головоломки слова для поиска. Вы можете отобразить все буквы слова поиска в графе и проверить окружающие узлы, чтобы увидеть, если эта строка соответствует любому из слов. Но не могли бы вы сделать то же самое с с одним массивом? Все, что вам действительно нужно сделать, это переместить указатель проверить письма слева и справа, и по ширине, чтобы проверить выше и ниже буквы. Решение этой проблемы с графиком не сложно, но это может создать много дополнительной работы и трудности, если вы не знакомы с их помощью - конечно, что не должно препятствовать вам делать это, особенно, если вы изучаете о их.
Я надеюсь , что поможет вам думать об этих структурах. Что касается книги рекомендации, я должен был бы пойти с Введение в алгоритмы .