':type pid: List[int]
:type ppid: List[int]
:type kill: int
:rtype: List[int]'

def killProcess(self, pid, ppid, kill):

    def killAll(pid, children, killed):
        killed.append(pid)
        for child in children[pid]:
            killAll(child, children, killed)
    result = []
    children = collections.defaultdict(set)
    for i in xrange(len(pid)):
        children[ppid[i]].add(pid[i])
    q = collections.deque()
    q.append(kill)
    while q:
        p = q.popleft()
        result.append(p)
        for child in children[p]:
            q.append(child)
    return result
