//由于设计的AI需要考虑速度问题,所有很多都是采用数组来实现的
#region 多叉树
public class ListTree
{
private TreeNode[] data;
private int index;
/// <summary>
/// 节点信息
/// </summary>
public struct TreeNode
{
public int index;
public Point data;
public int cost;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="MaxNode"></param>
public ListTree(int MaxNode)
{
data = new TreeNode[MaxNode];
index = 0;
}
public Point Remove()
{
if(index != -1)
{
Point temp = data[index].data;
index =data[index].index;
return temp;
}
else
{
return Point.Empty;
}
}
public int GetIndex()
{
return index;
}
public void MakeEmpty()
{
index = 0;
}
public void Insert(Point point,int cost,int Parent)
{
data[index].data = point;
data[index].cost = cost;
data[index++].index = Parent;
}
public Point GetValue(int Idx)
{
return data[Idx].data;
}
public int GetCost(int idx)
{
return data[idx].cost;
}
}
#endregion
#region 多叉树
public class ListTree
{
private TreeNode[] data;
private int index;
/// <summary>
/// 节点信息
/// </summary>
public struct TreeNode
{
public int index;
public Point data;
public int cost;
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="MaxNode"></param>
public ListTree(int MaxNode)
{
data = new TreeNode[MaxNode];
index = 0;
}
public Point Remove()
{
if(index != -1)
{
Point temp = data[index].data;
index =data[index].index;
return temp;
}
else
{
return Point.Empty;
}
}
public int GetIndex()
{
return index;
}
public void MakeEmpty()
{
index = 0;
}
public void Insert(Point point,int cost,int Parent)
{
data[index].data = point;
data[index].cost = cost;
data[index++].index = Parent;
}
public Point GetValue(int Idx)
{
return data[Idx].data;
}
public int GetCost(int idx)
{
return data[idx].cost;
}
}
#endregion