Javascript 基于关系数据生成层次结构
给出员工及其下属的名单。如何创建一个高效的递归函数,以获得经理和下属关系的树状结构,并返回顶级经理。所有名称都是唯一的,因此可以将其视为employeeIdJavascript 基于关系数据生成层次结构,javascript,java,algorithm,tree,Javascript,Java,Algorithm,Tree,给出员工及其下属的名单。如何创建一个高效的递归函数,以获得经理和下属关系的树状结构,并返回顶级经理。所有名称都是唯一的,因此可以将其视为employeeId [ { name: 'Chris', subordinates: ["Jim Beglin","Rosey","Chuloo"] }, { name: 'Jim Beglin', subordinates: ["Mike", "Liz"] }, {nam
[
{
name: 'Chris',
subordinates: ["Jim Beglin","Rosey","Chuloo"]
},
{
name: 'Jim Beglin',
subordinates: ["Mike", "Liz"]
},
{name: 'Mike'},
{name: 'Liz'},
{
name: 'Rosey',
subordinates: ["Annie","Michelle", "Sam", "Ivy"]
},
{name: 'Annie'},
{name: 'Michelle'},
{name: 'Sam'},
{name: 'Ivy'},
{
name: 'Chuloo',
subordinates: [ "Nick","Charly","Steph","Jon"]
},
{name: 'Nick'},
{
name: 'Charly'
subordinates: ["Law"]
},
{name: 'Law'},
{name: 'Steph'},
{name: 'Jon'}
]
您可以创建员工列表,其中员工的每个节点表示其拥有的子员工。您可以继续使用对象列表和数组递归调用函数。你可以遵循这个算法 算法[pseducode]:
function makeEmployeeTree(List list, Array objects){
if(objects length == 0) return;
if(list isEmpty()){
list.add(objects[0]);
remove -> objects[0] from objects;
}
else{
traverse -> list:
if (currentnode contains subordinates == objects[0]){
insert -> objects[i] in currentnode;
remove -> objects[0] from objects;
}
// in-case no subordinates found, append in list
insert -> objects[0] at the of list;
remove -> objects[0] from objects;
}
// recursively call the funtion for following object from objects;
makeEmployeeTree(list, objects);
}
现在,在按层次顺序制作列表后,按dfs打印每个节点,以获得所需的输出。。就这样。快乐编码
请编辑标记并在这里添加您将要使用的编程语言,如果您不能理解那里的伪代码,我将稍后添加代码。