Двоичное дерево поиска C #, дающее неверный мажоритарный элемент - PullRequest
0 голосов
/ 27 мая 2018

Основная причина, по которой я использую BST, состоит в том, чтобы получить элемент Majority, представляющий собой значение> Array.Length / 2.

Итак, если у нас есть массив из 5 элементов, то должен бытьминимум, по крайней мере, 3, чтобы считаться большинством.

Теперь проблема, с которой я сталкиваюсь в данный момент, заключается в том, что для большинства выбирается элемент Majority.

Этоприведенный ниже код:

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 голосов
/ 29 мая 2018

Спустя некоторое время, пытаясь выяснить, в чем проблема на самом деле, мне пришло понимание, что я забыл вставить простой размер ++ в метод 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++;
            }
        }
...