本文共 1758 字,大约阅读时间需要 5 分钟。
Convert the department list to preorder traversal of the name of department tree
链接:https://www.nowcoder.com/questionTerminal/86dc86da50424b47b25ced3e9f97b056
来源:牛客网输入
[[“d1”, “d0”, “IT”], [“d2”, “d0”, “RD”], [“d0”, “”, “The Company”], [“d3”, “d0”, “HR”]] 输出 [“The Company”,“HR”,“IT”,“RD”] 说明 On each level of the department tree, departments are listed in alphabetical order of the nameimport java.util.*;public class Solution { /** * Convert the department list to preorder traversal of the department tree * @param departments string字符串二维数组 [["id1", "parentId", "name"]...], there's only one root department with empty parent id. * @return string字符串一维数组 */ LinkedListres = new LinkedList<>(); public String[] listToTree (String[][] departments) { // write code here Map map = new HashMap<>(); int n = departments.length; Node root=null; for(int i=0;i arr1[2].compareTo(arr2[2])); for(String[] dep: departments) { Node parent = map.get(dep[1]); if(parent==null) continue; Node self = map.get(dep[0]); parent.sons.add(self); } dfs(map,root); return res.toArray(new String[0]); } void dfs(Map map,Node root) { if(root ==null) return; res.add(root.name); for(Node child: root.sons) { dfs(map,child); } } static class Node{ String id; String parentId; String name; List sons = new LinkedList<>(); Node(String[] x) { id = x[0]; parentId = x[1]; name = x[2]; } }}
转载地址:http://puyzi.baihongyu.com/