關於一個樹狀結構的通用類
因為在網上找不到,所以嘗試自己寫一下。
如果你有網路資源,請告訴我,謝謝。
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時記憶體沒清乾淨。
希望大家多提意見。
如果你有網路資源,請告訴我,謝謝。
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時記憶體沒清乾淨。
希望大家多提意見。
相關文章
- 關於elementUI樹狀結構的bugUI
- 通用-遞迴樹結構遞迴
- 資料結構之通用樹結構的實現資料結構
- TreeView樹狀結構View
- Java關於資料結構的實現:樹Java資料結構
- 樹狀的資料結構的建立資料結構
- 【譯】資料結構中關於樹的一切(java版)資料結構Java
- 一個簡單的樹形結構
- tkinter中樹狀結構的建立(十四)
- 論壇樹狀結構的展現
- 樹莓派:一個關於教育的故事樹莓派
- 關於go結構體一個奇怪問題Go結構體
- PPT製作樹狀結構圖
- 資料結構——樹狀陣列資料結構陣列
- php tree類的使用(樹形結構)PHP
- 我做的一個挺拙劣樹形結構
- 通用結果類用於返回響應結果
- JS遍歷樹狀資料,選擇需要的欄位重構一個新的樹狀資料JS
- JAVA樹形結構 通用程式碼(高效能)Java
- 網站SEO如何構建良好的樹狀結構呢?網站
- 一個.net下通用的Cookie操作類Cookie
- CSS 實現樹狀結構目錄CSS
- json轉json樹狀結構JSON
- 關於樹狀陣列一些有意思的東西陣列
- iOS開發關於位置的三個結構iOS
- 關於樹結構的查詢優化,及許可權樹的查詢優化優化
- js生成動態樹狀結構及排序JS排序
- python 遞迴樹狀結構 和 排序Python遞迴排序
- 一類子樹問題的總結
- 調和葉狀結構--一個有趣的公式(觀點)公式
- 關於樹的資料結構(二分搜尋樹,堆和優先佇列)資料結構佇列
- 關於SQLServer2005的學習筆記——樹形結構SQLServer筆記
- 資料結構 關於B樹說明及插入和分裂資料結構
- C#中類和結構的一個區別...C#
- 樹狀資料結構儲存方式—— CUD 篇資料結構
- 2024.4.12 樹狀結構補題
- 貢獻一個 Laravel 樹形結構管理包 ClosureTableLaravel
- 樹狀資料結構儲存方式——查詢篇資料結構