BST中的迭代与递归解决方案

时间:2011-12-05 21:31:20

标签: c# data-structures

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 个答案:

答案 0 :(得分:2)

您可能需要检查How to find height of BST iteratively?是否存在类似问题;那里的解决方案应该具有指导意义。

此外,对于递归解决方案,它应该会引发一个永远不会认为是正确孩子的红旗。

答案 1 :(得分:0)

    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的真实实现。