Primul lucru la care mă gândesc atunci când citesc această întrebare este: ce tipuri de lucruri folosesc grafice / arbori? și apoi mă gândesc înapoi la modul în care i-aș putea folosi.
De exemplu, luați două utilizări comune ale unui copac:
The DOM, and xml for that matter, resemble tree structures.

Are sens, de asemenea. Are sens din cauza modului în care trebuie aranjate aceste date . Și un sistem de fișiere. Pe un sistem UNIX există un nod rădăcină și ramificat mai jos. Când montați un dispozitiv nou, îl atașați pe copac.
De asemenea, ar trebui să vă întrebați: datele cad în acest tip de structură? Creați structuri de date care să aibă sens la problemă, iar restul va urma.
În ceea ce privește ușurarea, cred că este relativă. Ești bun cu funcțiile recursive pentru a traversa un copac / grafic? Ce se întâmplă dacă trebuie să echilibrezi copacul?
Gândiți-vă la un program care rezolvă un puzzle de căutare de cuvinte. Puteti harta tuturor literelor cuvantului de cautare intr-un graf si verificati nodurile inconjuratoare pentru a vedea daca sirul corespunde oricarei cuvinte. Dar nu ai putea să faci același lucru cu o singură matrice? Tot ce trebuie să faceți este să mutați un index pentru a verifica literele la stânga și la dreapta și la lățimea pentru a verifica literele de mai sus și de mai jos. Rezolvarea acestei probleme cu un grafic nu este dificilă, dar poate crea o mulțime de lucruri suplimentare și dificultăți dacă nu vă simțiți bine să le folosiți - desigur că nu ar trebui să vă descurajeze să o faceți, mai ales dacă învățați despre lor.
Sper că vă ajută să vă gândiți la aceste structuri. În ceea ce privește o recomandare de carte, trebuie să merg cu Introducere în algoritmi .