/** * childPathList里面的每个元素为一个Stack<Integer>,栈顶存放了路径的起始节点,栈底则 存放了终止节点, 该方法用于getPaths(catId)之中 * * @param childPathList */ private List<Stack<Integer>> walkUp(List<Stack<Integer>> childPathList) { List<Stack<Integer>> results = new LinkedList<>(); for (Stack<Integer> subPath : childPathList) { int currentId = subPath.peek(); int depth = getDepth(currentId); if (depth <= 1) { results.add(subPath); } else { Set<Integer> parentIds = getParentIds(currentId); for (int parentId : parentIds) { Stack<Integer> path = (Stack<Integer>) subPath.clone(); path.push(parentId); results.add(path); } } } return results; }