Graph Theory for Programmers: Algorithms for Processing Trees (Mathematics and Its Applications)