2011-12-05 66 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