Java Binary Tree
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 {// ww w. j a v a 2 s .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.
Next chapter...
What you will learn in the next chapter: