Итеративное и рекурсивное решение в BST - PullRequest
1 голос
/ 06 декабря 2011
public double FindMin()
{
    Node current = root;
    while (!(current.left == null))
        current = current.left;
    return current.Data;
}

public double FindMax()
{
    Node current = root;
    while (!(current.right == null))
        current = current.right;
    return current.Data;
}

Это итеративное решение функций моего бинарного дерева поиска для определения минимального и максимального значения в дереве в C #.Я хочу изменить его на рекурсивный, но этот код здесь не выглядит

public double RecurfindMax(Node current)
{
    //current = root;
    if (current.left == null)
    {
        return -1;
    }
    else
    //if (current.left != null)
    {
        return RecurfindMax(current = current.left);
        //return current;
    }

Так что вы можете сказать мне, что не так с этим кодом?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Возможно, вы захотите проверить Как найти высоту BST итеративно? для аналогичной проблемы;решения там должны быть поучительными.

Кроме того, для вашего рекурсивного решения он должен поднять красный флаг, который НИКОГДА не считает нужным ребенком.

0 голосов
/ 06 декабря 2011
    private Node FindMinRecHelper(Node current)
    {
        if (current.LeftNode == null)
        {
            return current;
        }
        else
        {
            return FindMinRecHelper(current.LeftNode);
        }
    }

    public void FindMinRec()
    {
        Node current = FindMinRecHelper(root);
        Console.WriteLine(current.Data);
    }

здесь истинная реализация RECURSIVE FIND MIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...