2011-06-20 23 views
1

以下のコードでバイナリツリーをどのように実装しますか?私はIDで番号順に以下を印刷する必要があります。これでバイナリツリーをどのように実装しますか?

import java.util.Scanner; 

class clubmember { 

    public static void main(String[] args) { 

     int id; 
     String fname, lname; 
     Scanner input = new Scanner(System.in); 

     System.out.println("ID>"); 
     id = input.nextInt(); 

     System.out.println("Fname >"); 
     fname = input.next(); 

     System.out.println("lname >"); 
     lname = input.next(); 


     Person object1 = new Person(id, fname, lname); 

     System.out.println(object1); 


    } 
} 




public class Person { 
    private final int id; 
    private final String firstName; 
    private final String lastName; 


    public Person(int id, String firstName, String lastName) { 
     this.id = id; 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public int getId() { 
     return id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    @Override 
    public String toString() { 
     return String.valueOf(id) + ": " + firstName + " " + lastName; 
    } 
} 

私は実際にこのツリーを例として使用するように求められました。誰でも手助けできますか?

public class BinaryTreeTest { 

    public static void main(String[] args) { 
    new BinaryTreeTest().run(); 
    } 

    // Node Class 
    static class Node { 
    Node left; 

    Node right; 

    int value; 

    public Node(int value) { 
     this.value = value; 
    } 
    } 

    public void run() { 
    // build simple tree 

    Node root = new Node(5); 
    System.out.println("Binary Tree Example"); 
    System.out.println("Building tree with root value of ID " + root.value); 
    insert(root, 1); 
    insert(root, 8); 
    insert(root, 6); 
    insert(root, 3); 
    insert(root, 9); 
    System.out.println("Traversing tree in order"); 
    printInOrder(root); 
    System.out.println("Traversing tree front-to-back from location 7"); 
    printFrontToBack(root, 7); 
    } 

    public void insert(Node node, int value) { 
    if (value < node.value) { 
     if (node.left != null) { 
     insert(node.left, value); 
     } else { 
     System.out.println(" Inserted " + value + " to left of " 
      + node.value); 
     node.left = new Node(value); 
     } 
    } else if (value > node.value) { 
     if (node.right != null) { 
     insert(node.right, value); 
     } else { 
     System.out.println(" Inserted " + value + " to right of " 
      + node.value); 
     node.right = new Node(value); 
     } 
    } 
    } 

    public void printInOrder(Node node) { 
    if (node != null) { 
     printInOrder(node.left); 
     System.out.println(" Traversed " + node.value); 
     printInOrder(node.right); 
    } 
    } 

    /** 
    * uses in-order traversal when the origin is less than the node's value 
    * 
    * uses reverse-order traversal when the origin is greater than the node's 
    * order 
    */ 
    public void printFrontToBack(Node node, int idNumber) { 
    if (node == null) 
     return; 
    if (node.value > idNumber) { 
     // print in order 
     printFrontToBack(node.left, idNumber); 
     System.out.println(" Traversed " + node.value); 
     printFrontToBack(node.right, idNumber); 
    } else if (node.value < idNumber) { 
     // print reverse order 
     printFrontToBack(node.right, idNumber); 
     System.out.println(" Traversed " + node.value); 
     printFrontToBack(node.left, idNumber); 
    } else { 
     // order doesn't matter 
     printFrontToBack(node.left, idNumber); 
     printFrontToBack(node.right, idNumber); 
    } 
    } 

} 
+0

実際に木が欲しいですか?あるいは、これらのオブジェクトをコンテナ内でソートできるようにしたいのですか? –

+0

私はバイナリツリーでそれらを望んでいました。 – allencoded

答えて

1

オブジェクトをIDで注文する場合は、TreeMapを使用できます。

public static void main(String[] args) { 
    Map<Integer, Person> persons = new TreeMap<Integer, Person>(); 
    persons.put(433, new Person(433, "John", "Smith"); 
    persons.put(211, new Person(211, "Peter", "Johnson"); 
    persons.put(556, new Person(556, "Laura", "Walters"); 

    // This loop will print out ordering by id 
    for (Integer key: persons.keySet()) 
     System.out.println(persons.get(key)); 
} 
1

PersonにComparableを実装させ、次にcompareTo(Person p)メソッドを追加することもできます。 次に、生成されたすべてのPersonオブジェクトをArrayListに追加し、Collections.sort()を使用してそれをソートすることができます。

関連する問題