make a binary tree in java code example
Example 1: trees in java
package MyPackage;
public class Tree {
static class Node {
int value;
Node left, right;
Node(int value){
this.value = value;
left = null;
right = null;
}
}
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 traverseInOrder(Node node) {
if (node != null) {
traverseInOrder(node.left);
System.out.print(" " + node.value);
traverseInOrder(node.right);
}
}
public static void main(String args[])
{
Tree tree = new Tree();
Node root = new Node(5);
System.out.println("Binary Tree Example");
System.out.println("Building tree with root value " + root.value);
tree.insert(root, 2);
tree.insert(root, 4);
tree.insert(root, 8);
tree.insert(root, 6);
tree.insert(root, 7);
tree.insert(root, 3);
tree.insert(root, 9);
System.out.println("Traversing tree in order");
tree.traverseLevelOrder();
}
}
Example 2: java binary tree
public class BinaryTree {
private int key;
private BinaryTree left, right;
/**
* Simple constructor.
*
* @param key
* to set as key.
*/
public BinaryTree(int key) {
this.key = key;
}
/**
* Extended constructor.
*
* @param key
* to set as key.
* @param left
* to set as left child.
* @param right
* to set as right child.
*/
public BinaryTree(int key, BinaryTree left, BinaryTree right) {
this.key = key;
setLeft(left);
setRight(right);
}
public int getKey() {
return key;
}
/**
* @return the left child.
*/
public BinaryTree getLeft() {
return left;
}
/**
* @return the right child.
*/
public BinaryTree getRight() {
return right;
}
public boolean hasLeft() {
return left != null;
}
public boolean hasRight() {
return right != null;
}
//Return a String representation of the BinaryTree using level order traversal
public String toString(){
int h = height(this);
int i;
String result = "";
for (i=1; i<=h; i++) {
result += printGivenLevel(this, i);
}
return result;
}
//returns the number of nodes in the BinaryTree
public int size(){
return size(this);
}
public static int size(BinaryTree tree){
if(tree == null) return 0;
return 1 + size(tree.getLeft()) + size(tree.getRight());
}
public int height(){ return height(this);}
public static int height(BinaryTree tree){
if(tree == null) return 0;
int left = height(tree.getLeft());
int right = height(tree.getRight());
return Math.max(left, right) + 1;
}
public String printGivenLevel (BinaryTree root ,int level) {
if (root == null) return "";
String result = "";
if (level == 1) {
result += root.getKey() + " ";
return result;
}else if (level > 1) {
String left = printGivenLevel(root.left, level-1);
String right = printGivenLevel(root.right, level-1);
return left + right;
}else{
return "";
}
}
/**
* @param left
* to set
*/
public void setLeft(BinaryTree left) {
this.left = left;
}
/**
* @param right
* to set
*/
public void setRight(BinaryTree right) {
this.right = right;
}
}