using System;
using System.Text;
namespace KdTree
{
[Serializable]
public class KdTreeNode<TKey, TValue>
{
public KdTreeNode()
{
}
public KdTreeNode(TKey[] point, TValue value)
{
Point = point;
Value = value;
}
public TKey[] Point;
public TValue Value = default(TValue);
internal KdTreeNode<TKey, TValue> LeftChild = null;
internal KdTreeNode<TKey, TValue> RightChild = null;
internal KdTreeNode<TKey, TValue> this[int compare]
{
get
{
if (compare <= 0)
return LeftChild;
else
return RightChild;
}
set
{
if (compare <= 0)
LeftChild = value;
else
RightChild = value;
}
}
public bool IsLeaf
{
get
{
return (LeftChild == null) && (RightChild == null);
}
}
public override string ToString()
{
var sb = new StringBuilder();
for (var dimension = 0; dimension < Point.Length; dimension++)
{
sb.Append(Point[dimension].ToString() + "\t");
}
if (Value == null)
sb.Append("null");
else
sb.Append(Value.ToString());
return sb.ToString();
}
}
}