用递归实现的Tree之二
// "└" "├ "│" "+"private List<Course> l = new ArrayList<Course>();private boolean[] aryNodeStatus = new boolean[100];private void tree(Integer cid, Integer level,boolean[] aryIsLastNode) {int index = 0;List<Course> list = (List<Course>) coursedao.findByPid(cid);for (Course t : list) {/* * System.out.println("-----list:" + list.toString()); * System.out.println("-----t:" + t); * System.out.println("-----list.size():" + list.size()); */String symbol = "";String symbolf = "";index++;// System.out.println("-----index:" + index);// 先画上级节点延续下来的"|"+空格,空格具体数目由层数决定//System.out.println("-----level:" + level);for (int lev = 0; lev < level; lev++) {if(aryIsLastNode[lev]==false)symbolf += "│";elsesymbolf += " ";}// 是否为最后一个节点if (index == list.size()) {symbol = "└";} else {symbol = "├";}String cname = symbolf + symbol + t.getCname();t.setCname(cname);//System.out.println("-----t:" + t.getCname());if (t.getLeaf() == 0) {l.add(t);// t.setLeveler(level + 1);// tree(t.getId(),// t.getLeveler(),index==list.size()?true:false);} else {l.add(t);t.setLevel(level + 1);if(index==list.size()){aryIsLastNode[level]=true;}else{aryIsLastNode[level]=false;}tree(t.getCid(), t.getLevel(),aryIsLastNode);}}}public List<Course> showTree() {l.clear();List<Course> list = (List<Course>) coursedao.findByPid(0);for (Course t : list) {if (t.getLeaf() != 0) {l.add(t);aryNodeStatus[0]=true;this.tree(t.getCid(), 0, aryNodeStatus);} else {l.add(t);}}return l;}