private void getChildQueues(
      org.apache.hadoop.yarn.api.records.QueueInfo parent,
      List<org.apache.hadoop.yarn.api.records.QueueInfo> queues) {
    List<org.apache.hadoop.yarn.api.records.QueueInfo> childQueues = parent.getChildQueues();

    for (org.apache.hadoop.yarn.api.records.QueueInfo child : childQueues) {
      queues.add(child);
      getChildQueues(child, queues);
    }
  }
  public QueueInfo[] getChildQueues(String parent) throws IOException, InterruptedException {
    List<org.apache.hadoop.yarn.api.records.QueueInfo> queues =
        new ArrayList<org.apache.hadoop.yarn.api.records.QueueInfo>();

    org.apache.hadoop.yarn.api.records.QueueInfo parentQueue =
        applicationsManager
            .getQueueInfo(getQueueInfoRequest(parent, false, true, false))
            .getQueueInfo();
    getChildQueues(parentQueue, queues);

    return TypeConverter.fromYarnQueueInfo(queues, this.conf);
  }