package com.example.demo;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
public class DepartmentTest {
public static void main(String[] args) {
List<Department> allDepartment = new ArrayList<>();
Department dep1 = new Department(1, 0, "北京總部");
Department dep3 = new Department(3, 1, "研發(fā)中心");
Department dep4 = new Department(4, 3, "后端研發(fā)組");
Department dep6 = new Department(6, 4, "后端實習(xí)生組");
Department dep7 = new Department(7, 3, "前端研發(fā)組");
Department dep8 = new Department(8, 1, "產(chǎn)品部");
allDepartment.add(dep6);
allDepartment.add(dep7);
allDepartment.add(dep8);
allDepartment.add(dep1);
allDepartment.add(dep3);
allDepartment.add(dep4);
List<Department> subDepartments = DepartmentTest.getSub(3, allDepartment);
for (Department subDepartment : subDepartments) {
System.out.println(subDepartment);
}
}
/**
* 根據(jù)id,獲取所有子部門列表(包括隔代子部門,一直到葉子節(jié)點)
* 要求:不能新增參數(shù),不能增加static變量
* @param pid
* @return
*/
public static List<Department> getSub(int pid, List<Department> allDepartment) {
return getSubList(pid, allDepartment);
}
public static List<Department> getSubList(int pid, List<Department> allDepartment){
List<Department> subDepartment = new ArrayList<>();
for (Department department : allDepartment ) {
if(department.getPid() == pid){
subDepartment.add(department);
}
}
if(CollectionUtils.isEmpty(subDepartment)){
return subDepartment;
}
for (Department department : allDepartment ) {
if(department.getPid() == pid){
List<Department> subList = getSubList(department.getId(), allDepartment);
subDepartment.addAll(subList);
}
}
return subDepartment;
}
}
class Department {
/** id */
private int id;
/** parent id */
private int pid;
/** 名稱 */
private String name;
public Department(int id, int pid, String name) {
this.id = id;
this.pid = pid;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Department{" +
"id=" + id +
", pid=" + pid +
", name='" + name + '\'' +
'}';
}
}
一道編程題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 對程序員來說,程序的魅力在于它的變化無窮,對于一門計算機語言來說,他的基礎(chǔ)語法是固定有限的,可是編程的花樣卻是千變...
- 題目:輸入一個年份,判斷該年份是否為閏年 提示:閏年的條件為:四年一閏,百年不閏,四百年再閏。 則根據(jù)可知核心判斷...
- 原題來自Google CodeJam 2017 Round C的第四題4M Corporation,大意如下: 給...