spiral traversal of binary tree
June 11, 2013 5 Comments
This can be done using two stacks in iterative manner.
The below diagram depicts the spiral traversal of BST

Steps to solve
push level_1 nodes (i.e, only root node) into stack_1;
next by popping elements of level_1, push children of level_l in to stack_2 (i.e, level_2);
next by popping elements of level_2, push children of level_2 in to stack_2 (i.e, level_3);
… so on
Code:
/**
* Algorithm to print binary tree in spiral manner
*
* @param node root node of the binary tree
*/
public void printTreeInSpiralForm(BinaryNode node) {
Stack<BinaryNode> stack1 = new Stack<BinaryNode>();
Stack<BinaryNode> stack2 = new Stack<BinaryNode>();
stack1.push(node);
while (!stack1.empty() || !stack2.empty()) {
//
while (!stack1.empty()) {
node = stack1.pop();
if(node != null) {
System.out.print(node.element+", ");
if(node.left != null)
stack2.push(node.left);
if(node.right != null)
stack2.push(node.right);
}
}
while (!stack2.empty() && node != null) {
node = stack2.pop();
if(node != null) {
System.out.print(node.element+", ");
if(node.left != null)
stack1.push(node.right);
if(node.right != null)
stack1.push(node.left);
}
}
}
}
Output:
20, 25, 15, 12, 18, 22, 28, 32, 26, 24, 21, 19, 17, 14, 6
Recent Comments