??? 基本的思想和步驟都在了,主要就是遞歸
??? /**
???? * 傳入級數返回存放該級數下所有組織列表的列表
???? * @param lever int 組織級數
???? * @return List<List> 存放組織列表
???? */
??? public List<List> getTreeLeverNode(int lever) {
??????? String sqlstr = "select? ID from?table1 where PARENT_ID=0";
??????? Result ret = Dao.executeQuery(sqlstr);
??????? List<List> list = new Vector<List>();
??????? List rslist = new Vector();
??????? List<String> nodeList = new Vector<String>();
??????? for (int i = 0; i < ret.Length(); i++) {
??????????? rslist = getNextNode(Integer.parseInt(ret[i]
??????????????????????? .toString()), lever - 1, nodeList);
??????????????? list.add(rslist);
??????? }
??????? return list;
??? }
??? /**
???? * 返回存放該級數下所有組織的列表
???? * @param reqParentid 請求傳入的父節點ID
???? * @param lever 組織級數
???? * @param list 存放該級數下所有組織的列表
???? * @return List<String> 存放組織
???? */
??? public List<String> getNextNode(int reqParentid, int lever, List list) {
??????? String sqlstr = "select? ID from?table1 where PARENT_ID="
??????????????? + reqParentid;
??????? DBResult ret = super.executeQuery(sqlstr);
??????? List rslist = new Vector();
??????? lever = lever - 1;
??????? if (lever > 0) {
???????????for (int i = 0; i < ret.Length(); i++) {
?????????????????rslist = getNextNode(Integer.parseInt(ret[i]
??????????????????????? .toString()), lever , nodeList);
??????????????? list.add(rslist);
???????????}
??????? } else {
??????????? for (int i = 0; i < ret.Length(); ; i++) {
????????????????list.add(ret[i].toString());
??????????? }
??????? }
??????? return list;
??? }