public List<Integer> findMinHeightTrees(int n, int[][] edges) {
        //1. 通过邻接链表的方式创建图
        LinkedList[] graph=createAdjacentLinkedListGraph(n,edges);
        //2. 计算所有根节点的树高度
        HashMap<Integer,Integer> heightMap=new HashMap<Integer, Integer>();
        int min=Integer.MAX_VALUE;
        //2.1 优化 按照邻接点的多少排序
        List<Integer> roots=getSortedNodes(graph);
        for(int i=0;i<n;++i){
            int curRoot=roots.get(i);
            Integer curHeight=getTreeHeight(curRoot,graph,min);
            if(curHeight!=null) {
                heightMap.put(curHeight,curRoot);
                if(curHeight<min) min=curHeight;
            }
        }
        //3. 找出最低高度的所有节点
        return parseResult(heightMap,min);
    }