/** 定义树节点类型 */
public static class TreeNode<T>
{
T data; // 节点数据
TreeNode<T> parent; // 当前节点的父节点
public ArrayList<TreeNode<T>> childs; // 子节点
public TreeNode(T data)
{
this.data = data;
}
/** 向当前节点中添加子节点 */
public void add(TreeNode<T> child)
{
if (childs == null) childs = new ArrayList<TreeNode<T>>();
if (!childs.contains(child))
{
childs.add(child);
child.parent = this;
}
}
/** 向当前节点中添加以data为数据的子节点 */
public void add(T data)
{
TreeNode<T> child = new TreeNode<T>(data);
add(child);
}
/** 向当前节点中添加子节点 */
public void add(ArrayList<T> datas)
{
for (T data : datas)
add(data);
}
/** 向当前节点中移除子节点child */
public void remove(TreeNode<T> child)
{
if (childs == null && !childs.contains(child)) childs.remove(child);
}
// public int getChildIndex(T key)
// {
// for()
// }
/** 在当前节点的所有子节点中寻找数据为key的子节点 */
public TreeNode<T> getChild(T key)
{
for (TreeNode<T> node : childs)
{
if (node.data.equals(key)) return node;
}
return null;
}
/** 定义树节点的字符串形式为数据data的字符串形式 */
public String toString()
{
return data.toString();
}
/** 将数组转化为列表 */
public ArrayList<T> toList(T[] Array)
{
ArrayList<T> list = new ArrayList<T>();
for (T A : Array)
list.add(A);
return list;
}
// /** 将列表转化为数组 */
// public T[] toArray(ArrayList<T> list)
// {
// if(list == null || list.size() == 0) return null;
// T[] Array = new T[list.size()];
// int i = 0;
//
// for (T A : list)
// Array[i++] = A;
// return Array;
// }
}
树节点类型定义
最新推荐文章于 2024-08-07 13:16:00 发布