2017-11-27 13 views
0

Javaでバイナリ検索ツリーをプリントアウトする方法は?私はツリーに挿入するコードを書いていますが、ツリーを印刷することができないと、要素が追加されているかどうかを確認しています。私は下に自分のコードを掲載します。Javaバイナリ検索ツリーを印刷する

void printTree(TreeNode node, String prefix) 
{ 
    if(node == null) return; 

    System.out.println(prefix + " + " + node.data); 
    printTree(node.left , prefix + " "); 
    printTree(node.right , prefix + " "); 
} 

最初の呼び出しは、あなたがツリーを印刷したい場所からprintTree(root,"");する必要があります:あなたはメソッド次使用すること

public class TreeNode { 

    TreeNode left; 
    TreeNode right; 
    TreeNode root; 

    int data; 

    public TreeNode(int d) { 

     data = d; 
     left = right = null; 
     root = null; 

    } 

    public synchronized void insert(int d) { 
     if (root == null){ 
      root = new TreeNode(d); 
     } 
     if (d < data) { 
      if (left == null) { 
       left = new TreeNode(d); 
      } else { 
       left.insert(d); 
      } 
     } else if (d > data) { 
      if (right == null) { 
       right = new TreeNode(d); 
      } else { 
       right.insert(d); 
      } 
     } 
    } 

    public TreeNode treeSearch(TreeNode root, int target) { 
     if (root != null) { 
      if (target < root.data) { 
       root = treeSearch(root.left, target); 
      } else if (target > root.data) { 
       root = treeSearch(root.right, target); 
      } 
     } 
     return root; 
    } 
} 
+2

は、それを印刷する少なくともあまりにも多くの方法があります。あなたは簡単な入力と希望の出力を提供できますか?あなた自身で何か試しましたか? – Fureeish

+0

私はそれを好きな方法を説明するのは難しいが、私は試してみます。出力はルートを最初に出力し、次に出力をルートから分岐させて下位レベルを出力し、次に挿入された値に応じてこのレベルから分岐する下位レベルを出力します。 – Bryan

+0

コメントを読んでいる間、「**あなたは簡単な入力と希望の出力を提供できますか?**」という部分を見逃してしまったと思います。これは質問を編集することを意味していたので、皆さんはコメントを見ずに誰もが簡単にそれを見ることができます。 – Fureeish

答えて

2

。ここでrootはルートノードの参照です。

更新日:
あなたは、このコードは、あなたがこのようなツリーデータを印刷することができhere

+0

ご協力ありがとうございます、この方法をより詳しく説明できますか? – Bryan

+0

@Bryanこのメソッドは 'recursion-method'を使ってツリーを出力します。最初のパラメータは印刷されるノードであり、2番目の引数はツリーの可視性を高めるためにスペースを含む 'String'です。このメソッドは 'node'が' null'かどうかを返します。 nullでなければ、 'data'部分を出力し、' left'と 'right'子に対してそれ自身を呼び出します。 – cse

+0

さらなる説明をありがとうございます! – Bryan

0

ワーキング見ることができます。

public void printTree(TreeNode root) { 
     if (root == null) return; 
     System.out.println(root.data); 
     printTree(root.left); 
     printTree(root.right); 
    } 
0
private void print(PrintWriter out) { 
    print(root, out, ""); 
} 

private void print(TreeNode subtree, PrintWriter out, String indent) { 
    if (subtree != null) { 
     print(subtree.left, out, indent + "--"); 
     out.printf("%s %s%n", indent, subtree.data); 
     print(subtree.right, out, indent + "--"); 
    } 
} 
関連する問題