我使用BST的主要原因是获得多数元素,即值> Array.Length / 2.
因此,如果我们有一个包含5个元素的数组,那么必须至少有3个元素被认为是大多数元素。
现在我面临的问题是,选择多数元素是为了数组中的第一个元素。
这是下面的代码:
public Node nnde(Node root)
{
if (root== null)
{
root= newNode;
size++;
return root;
}
if (elm < root.elm)
{
if (root.lft != null)
{
InsertNewNode(root.lft, elm);
}
else
{
root.lft = new Node(elm);
}
}
else if (elm> root.rght)
{
if (root.rght != null)
{
InsertNewNode( root.rght, elm);
}
else
{
root.rght = new Node(elm);
}
}
return root;
}
数组中的元素:2 0 1 2 1
应该没有多数元素,但是,我当前编程的BST显示为2。
答案 0 :(得分:2)
经过一段时间试图找出问题实际上是什么,我忘记在InsertNewNode()方法中插入一个简单的大小++的实现来到我身边。
编辑的代码如下:
if (elm < root.lft)
{
if (root.lft != null)
{
root.lft = InsertNewNode(root.lft, elm);
}
else
{
root.lft = new Node(elm);
size++;
}
}
else if (elm > root.rght)
{
if (root.rght != null)
{
root.rght = InsertNewNode(root.rght, elm);
}
else
{
root.rght = new Node(elm);
size++;
}
}