Friday, 28 April 2017

Binary Tree Preorder Traversal in Java

Binary Tree Preorder Traversal in Java


Preorder traversal is one of the way to traverse the binary Tree. In Preorder traversal Root node is read first then Left child and at last Right child.

Binary Tree Preorder traversal is a very popular interview question so better to understand it properly.

There are 2 ways to doing Preorder traversal,
  1. Recursive Preorder traversal of Binary tree.
  2. Iterative Preorder traversal of Binary tree.
Preorder Traversal

There are multiple ways to traversing a Binary Tree like, Preorder traversal, Postorder traversal, Inorder traversal, Spiral order traversal, Vertical order traversal, Level order traversal etc.

In this post, we will focus on Preorder Traversal of Binary Tree

Algorithm: 

Preorder traversal: To traverse a binary tree in Preorder fashion,
  1. Visit the root node and print data of that node. 
  2. Traverse the Left subtree.
  3. Traverse the Right subtree. 
Preorder traversal example.
preorder traversal of binary tree example
Preorder traversal of binary tree example
Therefore, the Preorder traversal of the above sample tree will output: 45  25  15  35  75.

Let's see Preorder traversal step by step.

Preorder Traversals Java Program.


Node.java
package javabypatel.tree;

public class Node {
 private int data;
 private Node left;
 private Node right;

 public Node(int data) {
  this.data=data;
 }

 public int getData() {
  return data;
 }
 public void setData(int data) {
  this.data = data;
 }
 public Node getLeft() {
  return left;
 }
 public void setLeft(Node left) {
  this.left = left;
 }
 public Node getRight() {
  return right;
 }
 public void setRight(Node right) {
  this.right = right;
 }
}
PreorderBinaryTreeTraversal.java
package javabypatel.tree;

import java.util.LinkedList;
import java.util.Queue;

public class PreorderBinaryTreeTraversal {
 private Node rootNode;

 public static void main(String[] args) {
  new BinaryTreeTraversal();
 }

 public PreorderBinaryTreeTraversal(){

  addNode(rootNode, 45); 
  addNode(rootNode, 25); 
  addNode(rootNode, 75); 
  addNode(rootNode, 15); 
  addNode(rootNode, 35); 
    
  System.out.println("\nPre Order Traversal :");
  printTreePreOrder(rootNode);
 }
  
 //Preorder traversal printing. 
 private void printTreePreOrder(Node rootNode){
  if(rootNode==null)
   return;
  System.out.print(rootNode.getData() + " ");
  printTreePreOrder(rootNode.getLeft());
  printTreePreOrder(rootNode.getRight());
 }
  
 private void addNode(Node rootNode, int data){
  if(rootNode==null){
   Node temp1 = new Node(data);
   this.rootNode=temp1;
  }else{
   addNodeInProperPlace(rootNode, data);
  }
 }
 
 private void addNodeInProperPlace(Node rootNode, int data){ 
  if(data>rootNode.getData()){
   if(rootNode.getRight()!=null){
    addNode(rootNode.getRight(), data);
   }else{
    Node temp1 = new Node(data);
    rootNode.setRight(temp1);
   }
  }else if(data<rootNode.getData()){
   if(rootNode.getLeft()!=null){
    addNode(rootNode.getLeft(), data);
   }else{
    Node temp1 = new Node(data);
    rootNode.setLeft(temp1);
   }
  }
 }
}

You may also like to see


Postorder Traversal Java Program

Level order traversal in binary tree

Zig Zag Traversal of Binary Tree. 

Boundary Traversal of binary tree. 

Print Nodes in Top View of Binary Tree

Print Nodes in Bottom View of Binary Tree.

Print a Binary Tree in Vertical Order

Enjoy !!!! 

If you find any issue in post or face any error while implementing, Please comment.

No comments:

Post a Comment