C#二叉搜索树提供不正确的多数元素

use*_*943 5 c# recursion binary-search-tree

我使用BST的主要原因是获取Majority元素,即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;
}
Run Code Online (Sandbox Code Playgroud)

数组中的元素:2 0 1 2 1

应该没有多数元素,但是,我目前编程的BST显示为2.

use*_*943 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++;
            }
        }
Run Code Online (Sandbox Code Playgroud)