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

时间:2018-05-27 07:37:55

标签: c# recursion binary-search-tree

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

1 个答案:

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