因为在网上找不到,所以尝试自己写一下。 如果你有网络资源,请告诉我,谢谢。
import java.util.*;
public class TreeModule { TreeModule son ;//最左边的儿子节点 TreeModule bro ;//最左边的兄弟节点 TreeModule father;
public boolean hasSon() { if (son != null) { return true; } return false; }
public boolean hasBro() { if (bro !=null ) { return true; } return false; }
public boolean hasFather() { if (this.father!=null) { return true; } return false; }
public TreeModule getFather() { return this.father; }
public TreeModule getSon() { return son; }
public TreeModule getBro() { return bro; } public TreeModule getLastson() { TreeModule point = this.getSon(); while(point !=null && point.hasBro()) { point = point.getBro(); } return point; }
public TreeModule getLastbro() { TreeModule point = this.getBro(); while (point != null && point.hasBro()) { point = point.getBro(); } return point; }
public ArrayList getSons() { ArrayList list = new ArrayList(); TreeModule temp = null; if (this.hasSon()) { temp = this.getSon(); list.add(temp); while (temp.hasBro()) { temp = temp.getBro(); list.add(temp); } } return list; }
public ArrayList getBrothers() { ArrayList list = new ArrayList(); TreeModule temp = this; while (temp.hasBro()) { temp = temp.getBro(); list.add(temp); } return list; } public void addSon(TreeModule a) { TreeModule temp = this; if (temp==null) return; if(!temp.hasSon()) { temp.son = a; } else { temp=temp.getSon(); while (temp.hasBro()) { temp=temp.getBro(); }
temp.bro=a; }
a.father = this; }
public void addSons(ArrayList list) { if (list.size()>=1) { for (int j=0;j<list.size() ;j++ ) { this.addSon((TreeModule)list.get(j)); } } }
public void delSon(TreeModule son) { ArrayList list = getSons(); for (int i=0;i<list.size() ;i++) { if ( ((TreeModule)list.get(i)).equals(son) ) { ((TreeModule)list.get(i-1)).bro=(TreeModule)list.get(i+1); ArrayList list2 = ((TreeModule)list.get(i)).getSons(); this.addSons(list2); //list2.get(i) = null; return; } } }
public void clearSon(TreeModule son) { ArrayList list = getSons(); for (int i=0;i<list.size() ;i++ ) { if ( ((TreeModule)list.get(i)).equals(son) ) { ((TreeModule)list.get(i-1)).bro=(TreeModule)list.get(i+1); //((TreeModule)list.get(i)).deltree(); return; } } } public void deltree() { ArrayList list = getSons(); if(list.size()==0) { /*cant be compiled this = null; */ return; }
Iterator ite = list.iterator(); TreeModule temp = null; while (ite.hasNext()) { temp=(TreeModule)ite.next(); temp.deltree(); }
}
public TreeModule getTop() { TreeModule temp = this.father; if (temp==null) { return this; } while (temp!=null) { temp = temp.father; } return temp; } }
我感觉有很多问题,特别是在clearSon时内存没清干净。 希望大家多提意见。
|
|