Hard · Database

Reporting Hierarchy Depth

Given an acyclic Employee(id, name, managerId) forest where managerId=0 marks a root, return Employee and Depth for every employee reachable from a root. A root has depth zero and a direct report has depth one; row order does not matter.

Examples

Example 1

{
  "employees": [
    {"id": 1, "name": "Ada", "managerId": 0},
    {"id": 2, "name": "Ben", "managerId": 1},
    {"id": 3, "name": "Cy", "managerId": 1},
    {"id": 4, "name": "Dee", "managerId": 2},
    {"id": 5, "name": "Eve", "managerId": 99}
  ]
}

Output: [{"Employee":"Ada","Depth":0},{"Employee":"Ben","Depth":1},{"Employee":"Cy","Depth":1},{"Employee":"Dee","Depth":2}]

Example 2

{
  "employees": [
    {"id": 10, "name": "Erin", "managerId": 0},
    {"id": 11, "name": "Fox", "managerId": 10},
    {"id": 12, "name": "Gia", "managerId": 0}
  ]
}

Output: [{"Employee":"Erin","Depth":0},{"Employee":"Gia","Depth":0},{"Employee":"Fox","Depth":1}]

Rebuild it in the studio

20 free core interview problems with full runner & lessons; explore the complete 380+ library with Pro.

More Database problems