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

ありがとう私は、再帰的な問題はフラグのためにあることを知っています.thanks – 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); 
    } 

ここでRECURSIVE FIND MINの真の実装です。

+0

hmmmは、おかげでそれを整理しました – Rdx

+0

それはうまくいけば、それをチェック! – Desire