2011-12-05 63 views
1
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#中树中的最小值和最大值。我想改变它递归,但代码似乎并不在这里BST中的迭代和递归解决方案

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

您可能想检查How to find height of BST iteratively?是否有类似的问题;那里的解决方案应该是有启发性的。

此外,为您的递归解决方案,它应该提出一个红旗,它永远不会考虑正确的孩子。

+0

谢谢我的想法,递归的问题是因为国旗..谢谢 – Rdx

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); 
    } 

这里真正实现递归寻找MIN。

+0

嗯排序出来感谢 – Rdx

+0

如果它的工作正常,然后,勾选它! – Desire