private void ValidateStructure(int index)
{
if (index == TreeNode.NULL_NODE)
{
return;
}
if (index == m_root)
{
Debug.Assert(m_nodes[index].Parent == TreeNode.NULL_NODE);
}
TreeNode node = m_nodes[index];
int child1 = node.Child1;
int child2 = node.Child2;
if (node.Leaf)
{
Debug.Assert(child1 == TreeNode.NULL_NODE);
Debug.Assert(child2 == TreeNode.NULL_NODE);
Debug.Assert(node.Height == 0);
return;
}
Debug.Assert(0 <= child1 && child1 < m_nodeCapacity);
Debug.Assert(0 <= child2 && child2 < m_nodeCapacity);
Debug.Assert(m_nodes[child1].Parent == index);
Debug.Assert(m_nodes[child2].Parent == index);
ValidateStructure(child1);
ValidateStructure(child2);
}