结构 nodes 是个二维数组,结构如下:
id parentId
=================================
001 -1
002 001
003 001
004 002
005 002
006 002
007 003
008 003
树形式为:
001-->002-->004
001-->002-->005
001-->002-->006
001-->003-->007
001-->003-->008求递归算法遍历,要求有遍历路径
id parentId
=================================
001 -1
002 001
003 001
004 002
005 002
006 002
007 003
008 003
树形式为:
001-->002-->004
001-->002-->005
001-->002-->006
001-->003-->007
001-->003-->008求递归算法遍历,要求有遍历路径
/**
* 对树状结构的一维切片的层次进行递归,递归路径中...
* @param sliceColumnAndParentId String[][] 所有节点
* @param rootValue String 根节点
* @param curSliceColumn String 当前节点,第一次运行时,当前节点=根节点
* @param lastBuffer StringBuffer 递归所需的栈的缓存
* @param list List 返回结果
*/
private static void RecursionSlice(final String[][] sliceColumnAndParentId,String rootValue,String curSliceColumn,StringBuffer lastBuffer,List list) {
String[] sons = searchSonSlice(curSliceColumn, sliceColumnAndParentId);
StringBuffer sb=new StringBuffer(); if(curSliceColumn.equalsIgnoreCase(rootValue)){
lastBuffer.append(rootValue).append(";");
} if (sons.length > 0) {
for (int i = 0; i < sons.length; i++) {
sb.setLength(0);
sb.append(lastBuffer);
curSliceColumn = sons[i];
sb.append(curSliceColumn);
sb.append(";");
RecursionSlice(sliceColumnAndParentId,rootValue,curSliceColumn,sb,list);
}
}
else {
list.add(lastBuffer.toString());
}
}