Binary Tree in Java

Binary Tree implementation

The following code creates a binary tree by defining the tree node first. Node is a class which can reference left child node and right child node. It also contains the int value.


class Node {//from ww w .  j  a va  2s.co m
  Node left;

  Node right;

  int value;

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

class BinaryTree {
  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 camera) {
    if (node == null)
      return;
    if (node.value > camera) {
      // print in order
      printFrontToBack(node.left, camera);
      System.out.println("  Traversed " + node.value);
      printFrontToBack(node.right, camera);
    } else if (node.value < camera) {
      // print reverse order
      printFrontToBack(node.right, camera);
      System.out.println("  Traversed " + node.value);
      printFrontToBack(node.left, camera);
    } else {
      // order doesn't matter
      printFrontToBack(node.left, camera);
      printFrontToBack(node.right, camera);
    }
  }

}

public class Main {

  public static void main(String[] args) {
    Node root = new Node(5);
    System.out.println("Binary Tree Example");
    System.out.println("Building tree with root value " + root.value);
    BinaryTree binaryTree = new BinaryTree();
    binaryTree.insert(root, 1);
    binaryTree.insert(root, 8);
    binaryTree.insert(root, 6);
    binaryTree.insert(root, 3);
    binaryTree.insert(root, 9);
    System.out.println("Traversing tree in order");
    binaryTree.printInOrder(root);
    System.out.println("Traversing tree front-to-back from location 7");
    binaryTree.printFrontToBack(root, 7);
  }

}

The code above generates the following result.





















Home »
  Java Tutorial »
    Java Language »




Java Data Type, Operator
Java Statement
Java Class
Java Array
Java Exception Handling
Java Annotations
Java Generics
Java Data Structures