1. What is PreOrder Traversal?
PreOrder traversal is a type of Depth-First Traversal of a binary tree where you:
- Visit the current node
- Traverse the left subtree
- Traverse the right subtree
This is also known as the Root-Left-Right traversal order.
2. PreOrder Traversal Pattern
For each node:
PreOrder(node):
if node is null:
return
visit(node)
PreOrder(node.left)
PreOrder(node.right)
3. Java Implementation
class TreeNode {
int data;
TreeNode left, right;
public TreeNode(int item) {
data = item;
left = right = null;
}
}
public class RecursivePreOrderTraversal {
TreeNode root;
public void preOrder(TreeNode node) {
if (node == null)
return;
// Step 1: Visit the root
System.out.print(node.data + " ");
// Step 2: Traverse the left subtree
preOrder(node.left);
// Step 3: Traverse the right subtree
preOrder(node.right);
}
public static void main(String[] args) {
RecursivePreOrderTraversal tree = new RecursivePreOrderTraversal();
// Manually creating the binary tree:
/*
1
/ \
2 3
/ \ /
4 5 6
*/
tree.root = new TreeNode(1);
tree.root.left = new TreeNode(2);
tree.root.right = new TreeNode(3);
tree.root.left.left = new TreeNode(4);
tree.root.left.right = new TreeNode(5);
tree.root.right.left = new TreeNode(6);
System.out.println("PreOrder traversal of binary tree is:");
tree.preOrder(tree.root); // Output: 1 2 4 5 3 6
}
}
8. Time and Space Complexity
Time Complexity: O(n)
- You visit every node exactly once.
Space Complexity:
- O(h), where
his the height of the tree (due to the recursive call stack). - In the worst case (skewed tree), this becomes O(n).
- In a balanced tree, this is O(log n).
