Wednesday, July 23, 2008

Print a binary tree rotated on its side

For example,
    1
/ \
2 3
/\
4 5

Prints out...(Notice the spacing):
 3
1
5
2
4

Notice the order of nodes being printed on each line: C F A E B D. This is a right-first inorder traversal.

java code:
class BinaryTree
{
int data;
BinaryTree right;
BinaryTree left;

public BinaryTree(int data)
{
this.data = data;
this.left = this.right = null;
}
public BinaryTree(int data, BinaryTree left, BinaryTree right)
{
this.data = data;
this.left = left;
this.right = right;
}

public void printInorder()
{
printInorder(this, 0);
}

private void printInorder(BinaryTree BinaryTree, int level)
{
if (BinaryTree == null)
return;
printInorder(BinaryTree.right, level+1);
StringBuffer buf = new StringBuffer();
for (int i=0; i<level; i++)
buf.append(' ');
System.out.println(buf.append(BinaryTree.data));
printInorder(BinaryTree.left, level+1);
}

public static void main(String[] args)
{
BinaryTree tree =
new BinaryTree(1,
new BinaryTree(2,
new BinaryTree(4),
new BinaryTree(5)),
new BinaryTree(3));
tree.printInorder();
}
}

No comments: