GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • LeetCodeJavascript.com
  • Star on GitHub

This view

  • Original page
  • New address

GeezerVison is showing leetcodejavascript.com — #582 - Kill Process - LeetCode JavaScript Solutions

Back to all solutions

#582 - Kill Process

Medium • View on LeetCode • View on GitHub
Array Hash Table Depth-First Search Tree Breadth-First Search

Problem Description

You have n processes forming a rooted tree structure. You are given two integer arrays pid and ppid, where pid[i] is the ID of the ith process and ppid[i] is the ID of the ith process's parent process.

Each process has only one parent process but may have multiple children processes. Only one process has ppid[i] = 0, which means this process has no parent process (the root of the tree).

When a process is killed, all of its children processes will also be killed.

Given an integer kill representing the ID of a process you want to kill, return a list of the IDs of the processes that will be killed. You may return the answer in any order.

Solution

/**
 * @param {number[]} pid
 * @param {number[]} ppid
 * @param {number} kill
 * @return {number[]}
 */
var killProcess = function(pid, ppid, kill) {
  const map = new Map();
  for (let i = 0; i < ppid.length; i++) {
    if (!map.has(ppid[i])) {
      map.set(ppid[i], []);
    }
    map.get(ppid[i]).push(pid[i]);
  }

  const result = [];
  traverse(kill);
  return result;

  function traverse(process) {
    result.push(process);
    if (map.has(process)) {
      for (const child of map.get(process)) {
        traverse(child);
      }
    }
  }
};
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.