我想在二进制搜索树中的所有节点中添加深度。这是我的Add方法。但我看到我的深度属性设置任意值。有人可以让我知道我犯了什么错误。
public void Add(int data)
{
BNode current = root;
int depth = 0;
while (true)
{
if (data < (int)current.Data && current.Left != null)
{
depth = depth + 1;
current = current.Left;
}
else if (data < (int)current.Data && current.Left == null)
{
depth = depth + 1;
current.Left = new BNode(data);
current.Left.Parent = current;
current.Depth = depth;
break;
}
else if (data > (int)current.Data && current.Right != null)
{
depth = depth + 1;
current = current.Right;
}
else if (data > (int)current.Data && current.Right == null)
{
depth = depth + 1;
current.Right = new BNode(data);
current.Right.Parent = current;
current.Right.Depth = depth;
break;
}
}
}
答案 0 :(得分:0)
对不起大家,我发现了我的错误。
而不是
current.Depth = depth;
应该是
current.Left.Depth = depth;