Problem Statement:
Traverse the Binary Tree in Zig Zag manner (aka spiral traversal)
Given Binary Tree:
The resultant Spiral Traversal or Zig-Zag Traversal is:
Solution:
This problem is similar to level order traversal which required a Queue,
In this problem we would require 2 stacks meant for storing odd level and even level nodes in the tree
This problem is also called spiral traversal of binary Tree
Full Source Code: LINK
Similar to this problem is Level Order Traversal of binary Tree.
Please post your critiques , suggestions as comments , also if any flaw or improvisation possible please do let me know.
Happy Coding !! :)
Traverse the Binary Tree in Zig Zag manner (aka spiral traversal)
Given Binary Tree:
Fig1: Given Binary Tree |
The resultant Spiral Traversal or Zig-Zag Traversal is:
Fig2 : Resultant Level order Traversal (Left to Right) |
Solution:
This problem is similar to level order traversal which required a Queue,
In this problem we would require 2 stacks meant for storing odd level and even level nodes in the tree
This problem is also called spiral traversal of binary Tree
Full Source Code: LINK
/** * Zig Zag Level Order Traversal ( 2 stacks used) * @author Prateek Rathore */ public void zigzagTraverse(Node root){ if(root == null) return; Stackoddstack = new Stack (); //holds root as first element Stack evenstack = new Stack (); oddstack.add(root); while(!oddstack.isEmpty() || !evenstack.isEmpty()) { while(!oddstack.isEmpty()) { Node item=oddstack.pop(); System.out.print(item.data+"\t"); if(item.left!=null) evenstack.push(item.left); if(item.right!=null) evenstack.push(item.right); } System.out.println(); while(!evenstack.isEmpty()) { Node item=evenstack.pop(); System.out.print(item.data+"\t"); if(item.right!=null) oddstack.push(item.right); if(item.left!=null) oddstack.push(item.left); } System.out.println(); } }
Similar to this problem is Level Order Traversal of binary Tree.
Please post your critiques , suggestions as comments , also if any flaw or improvisation possible please do let me know.
Happy Coding !! :)
Why does it require two stacks and not a stack and queue ?
ReplyDelete