Как бы вы реализовали двоичное дерево в этом? - PullRequest
1 голос
/ 20 июня 2011

Как бы вы реализовали двоичное дерево в приведенном ниже коде?Мне нужно, чтобы распечатать ниже в числовом порядке по идентификатору.

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);
    }
  }

}

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Вы можете также сделать Person реализующим Comparable, а затем добавить метод CompareTo (Person p). Затем вы можете добавить все созданные вами объекты Person в ArrayList и использовать Collections.sort () для его сортировки.

1 голос
/ 20 июня 2011

Если вы хотите, чтобы ваши объекты располагались по идентификатору, вы можете использовать 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));
}
...