【发布时间】:2018-11-06 01:59:31
【问题描述】:
我使用 BST 的主要原因是获取多数元素,即 Value > 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。
【问题讨论】:
-
您必须为数组中的每个唯一值调用 GetMajorityElement 方法,然后比较哪个返回值最大。
-
已经在这样做了
-
代码没有贴出来。这可能就是错误所在。
-
通过添加提到的代码编辑帖子
-
在您的方法
InsertNewNode中,您没有正确更新size属性。使用此代码,您的树的大小将为 2,这就是为什么它将多数返回为 2
标签: c# recursion binary-search-tree