2017-05-13 12 views
0

は例えば、私は、このノードのクラスを持っている:同じノードクラスを使用してバイナリツリーとリンクリストを作成できますか?

public class node{ 
int data 
node left; /*For binary Tree*/ 
node right; /*For binary Tree*/ 
node next; /*For the linked list*/ 
public node(int d){ 
this.data=d; 
this.left=null; 
this.right=null; 
this.next=null; 
} 

私は、バイナリツリーのすべてのノードを作成し、その後INORDERトラバーサルシーケンスを使用して、最終的にLinkedListのに情報を渡したいです。私はバイナリツリーのためのすべてのノードを作成する方法があります。しかし、私はinorderメソッドで次のようなことをしています。

私はinorderメソッドでリンクリストにデータを渡しています。これは正しいです?バイナリツリーデータを同じノードクラスのリンクリストに渡すことは可能ですか? P.D:私の英語は申し訳ありません。あなたはそれが仕事を得ることができます

+1

: はあなたのような何かを行うことができますノードのリンクリストを作成するには。あなたはそれを試してみて、問題に遭遇するのを見てみませんか? –

+0

コンパイル可能なコードを投稿してください。 Javaの命名規則に従ってください。ベストセラー[mcve]。技術的にはそれを働かせることができますが、構造と呼び出しは奇妙です。 b。私たちはあなたが望むものを? ***データのリンクリスト***? ***ノードのリンクリスト***?また、リンクされたリストをすべてのノードに保存する理由は何ですか? – c0der

答えて

2

技術:

import java.util.Arrays; 
import java.util.LinkedList; 

public class Node{ 

    int data; 
    Node left; /*For binary Tree*/ 
    Node right; /*For binary Tree*/ 
    Node next; /*For the linked list*/ 
    static LinkedList<Integer> list = new LinkedList<>(); 

    public Node(int d){ 

     data=d; 
     left=null; 
     right=null; 
     next=null; 
    } 

    public void InOrder(Node r){ 

     if(r!=null){ 
      InOrder(r.left); 
      list.add(r.data); 
      InOrder(r.right); 
     } 
    } 

    public static void main(String[] args) { 

     Node[] nodes = new Node[10]; 

     for(int i=0; i < nodes.length ; i++) { 

      nodes[i] = new Node(i*10); 
      if(i>0) { 
       nodes[i].left = nodes[i-1]; 
      } 
     } 

     //sort and add data to linked list 
     nodes[nodes.length-1].InOrder(nodes[nodes.length-1]); 
     System.out.println(Arrays.toString(list.toArray())); 
    } 
} 

ご覧のとおり、構造と呼び出しは奇数です。私はそれが可能だと信じてい

import java.util.LinkedList; 

public class Tree{ 

    LinkedList<Node> list=new LinkedList<>(); 

    Tree(int numberOfNodes){ 

     if(numberOfNodes >0) { 
      makeNodes(numberOfNodes); 
     } 

    } 

    private void makeNodes(int numberOfNodes) { 

     Node[] nodes = new Node[numberOfNodes]; 

     for(int i=0; i < nodes.length ; i++) { 

      Node newNode = new Node(i*10); 
      nodes[i] = newNode; 

      if(i>0) { 
       newNode.left = nodes[i-1]; 
       nodes[i-1].right = newNode; 
      } 

      list.add(newNode); 
     } 
    } 

    public void printNodesData(){ 

     list.stream().forEach(e -> System.out.println(e.data)); 
    } 

    public static void main(String[] args) { 
     Tree tree = new Tree(10); 
     tree.printNodesData(); 
    } 
} 

class Node{ 
    int data; 
    Node left; /*For binary Tree*/ 
    Node right; /*For binary Tree*/ 
    Node next; /*For the linked list*/ 

    public Node(int d){ 

     data=d; 
     left=null; 
     right=null; 
     next=null; 
    } 
} 
関連する問題