in reply to Help parsing this data

I would use a simple hash, with the PIDs as the keys, and the full lines (or possibly the line without the PID) as values:
( ..., 7510 => "7510 5044 /usr/bin/grep", 7512 => "7512 4333 /usr/bin/egrep", 7515 => "7515 7508 sh", 7516 => "7516 7515 <defunct>" )
It is then very easy to read the PPID of the defunct process (7515), and from there look at the parent (7515 is its key), find the grand parent ID (7508) and look at the grand parent, and so on.

No need for a more complicated data structure, and this will be very fast.