Есть два свойства которые определяют дерево: 1. Все узлы графа соединены рёбрами. Для каждой пары вершин есть путь соединяющий их
2. Граф не содержит циклов. Есть только один путь между любыми двумя вершинами...
Если не знаешь чем граф отличается от дерева - вот короткий пост со свойствами дерева. Depth-first-search с использованием Adjacency List В задачах на программирование граф представлен неудобно, обычно в виде массива рёбер или вершин. Для графа на рисунке 1, такое представление может выглядеть как [ [0,1], [0,2], [0,3], [1,4] ] Первое что нужно сделать - преобразовать такой массив в формат с которым удобно работать. Одним из вариантов является AdjacencyList Затем к полученной структуре нужно применить Depth-first-search модифицированный под конкретную задачу...