2011-07-09 6 views
2

私は要素のバイナリツリーを検索し、その要素で始まる行を追加するコードを記述しようとしています。これまでのところ正しい位置を見つけてその位置に追加することができますが、残りの2分木は失われます。バイナリツリーの特定部分をどのように追加することができますか?(Java)ツリーはそのままにしておきますか?

public void add(String addroot, String addleft) 
     if(root!=nodesearch){ 
     if(root.left!=null){ 
      root=root.left; 
      add(addroot, addleft); 
     } 
     if(root.right!=null){ 
      root=root.right; 
      add(addroot, addleft); 
     } 
     } 
     else 
     root=insert(); 
    } 

insert()は要素を追加して正常に動作します。助けてくれてありがとう。

これは私が今考えていることです。

private BinaryStringNode local_root = root 
public void add() 

    if(root!=nodesearch){ 
    if(local_root.left!=null){ 
     local_root=local_root.left; 
     add(); 
    } 
    if(local_root.right!=null){ 
     local_root=local_root.right; 
     add(); 
    } 
    } 
    else 
    local_root=insert(); 
} 

local_root = insert()は、local_rootの位置でrootのinsertメソッドを使用しますか?また、local_root = local_root.rightはrootを経由しますか?

+0

いけ変更ルートですちょうどadd(find(s));を呼び出す合計を取得したいです!一時変数を使用する –

+0

一時変数を使用して検索すると、ルートにどのように追加できますか? – anon

+0

あなたのadd関数では、最初にrootを渡すときに関数を呼び出すときに "local_root"の値を渡しますが、ur再帰呼び出しではadd(local_root.right、addroot、addleft)を実行します –

答えて

0

まずそれ三つの独立した機能

void insert(BinaryStringNode root, BinaryStringNode new_node){ 

} 

int add(BinaryStringNode root){ 

} 

BinaryStringNode find(String name){ 

} 

が今することができますように最善のコードを記入してください。

あなたはsが文字列

関連する問題