How to Implement traverse a Binary tree in Preorder in Java using Recursion
Steps on Preorder Traversal Algorithm
visit the node
visit the left subtree
visit the right subtree
import java.util.Stack;
class Node
{
int data;
Node left, right;
public Node(int key)
{
data = key;
left = right = null;
}
}
class Main
{
public static void preorderIterative(Node root)
{
if (root == null) {
return;
}
Stack<Node> stack = new Stack();
stack.push(root);
// loop till stack is empty
while (!stack.empty())
{
// pop a node from the stack and print it
Node curr = stack.pop();
System.out.print(curr.data + " ");
if (curr.right != null) {
stack.push(curr.right);
}
if (curr.left != null) {
stack.push(curr.left);
}
// is processed first (LIFO order)
}
}
public static void main(String[] args)
{
Node root = new Node(1);
root.left = new Node(2);
root.right = new Node(3);
root.left.left = new Node(4);
root.right.left = new Node(5);
root.right.right = new Node(6);
root.right.left.left = new Node(7);
root.right.left.right = new Node(8);
preorderIterative(root);
}
}
Output
1
/ \
/ \
2 3
/ / \
/ / \
4 5 6
/ \
/ \
7 8