gpt4 book ai didi

C# 二进制搜索树给出不正确的多数元素

转载 作者:太空狗 更新时间:2023-10-29 23:36:12 26 4
gpt4 key购买 nike

我使用 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。

最佳答案

经过一段时间试图找出问题的真正原因后,我意识到我忘记在 InsertNewNode() 方法中插入一个简单的 size++。

修改后的代码如下:

        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++;
}
}

关于C# 二进制搜索树给出不正确的多数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com