2016-11-08 7 views
-1

BSTのすべてのノードにアクセスして最大のint値を見つけるアルゴリズムを試してみると、私のBSTはアンバランスでアルファベット順に並べ替えられていますが、私はツリー内で最大のint値を見つける必要があります。BSTのすべてを検索する再帰アルゴリズムが必要

私のコードは次のとおりです。

private Object Mode(BinaryTreeNode root) { 
    if (root == null) { 
     return null; 
    } 

    Object left = root.getElement(); 
    Object right = root.getElement(); 

    if (root.getLeftChild() != null) { 

     Object leftEle = root.getLeftChild().getElement(); 

     if (left.data < leftEle.data) { 
      left = Mode(root.getLeftChild()); 

     } 
    } 

    if (root.getRightChild() != null) { 

     Object rightEle = root.getRightChild().getElement(); 

     if (right.data < rightEle.data) { 
      right = Mode(root.getRightChild()); 

     } 
    } 

    if(left.data > right.data){ 
     return left; 
    } 

    return right;` 

} 

iは、メソッドの呼び出しがバックスタックからポップされた場合の比較が起こる知っているが、私は実際にすべてのノードとして

+2

あなたの説明にいくつかの(書式の)コードを書くことができれば、ここでは構文の問題を解決するのに役立つかもしれません。あなたの擬似コードはかなり正確であり、適切に再帰を使います。 –

+0

@MileHighあなたはこれを詳しく教えてください。 '私のBSTはアンバランスで、アルファベット順にソートされていますが、int値はそれらにあります。整数値と文字の間のソート順は何ですか? – radbrawler

答えて

0

をチェックし終わるかどうかはわからないあなたBSTはデータでソートされていないので、各ノードをトラバースしてそれらのノードを比較する必要があります。これらのチェックを削除すると、検索スペースが制限されます。right.data < rightEle.data & left.data < leftEle.data私はまだコードをコンパイルしていない。

private Object Mode(BinaryTreeNode root) { 
    if (root == null) { 
     return null; 
    } 

    Object left = root.getElement(); 
    Object right = root.getElement(); 

    if (root.getLeftChild() != null) { 

     Object leftEle = root.getLeftChild().getElement();   
     left = Mode(root.getLeftChild());  
    } 

    if (root.getRightChild() != null) {  
     Object rightEle = root.getRightChild().getElement(); 
     right = Mode(root.getRightChild()); 
    } 
    if(left != null){ 
     if(right != null) 
      if(left.data < right.data 
       return right; 
     return left; 

    } 

    return right; 


} 
関連する問題