Binary tree level order traversal in recursive




   Process: It is working as pre-order traversal binary tree. So all data should be printed at level 1 place



package com.kartik.org;

public class BinaryTreeLevelOrder {
 
 public static class TreeNode
 {
  int data;
  TreeNode left;
  TreeNode right;
  TreeNode(int data)
  {
   this.data=data;
  }
 }
 
 
 // prints in level order left to right
  public static boolean levelOrderTraversalLeftToRight(TreeNode startNode,int level) {
   if(null == startNode){
    return false;
   }
   if(level == 1){
    System.out.println(startNode.data+" ");
    return true;
   }
   boolean left =levelOrderTraversalLeftToRight(startNode.left, level-1);
   boolean right =levelOrderTraversalLeftToRight(startNode.right, level-1);
   
   return left || right;
   
  }
  public static void levelOrderTraversalLeftToRight(TreeNode startNode) {
   if(null == startNode){
    return;
   }
   int level=1;
   while(levelOrderTraversalLeftToRight(startNode, level++)){
    
   }
   
  }
 
  
  //print right to left
  public static boolean levelOrderTraversalRightToLeft(TreeNode startNode,int level) {
   if(null == startNode){
    return false;
   }
   if(level == 1){
    System.out.println(startNode.data+" ");
    return true;
   }
   boolean right =levelOrderTraversalRightToLeft(startNode.right, level-1);
   boolean left =levelOrderTraversalRightToLeft(startNode.left, level-1);
   
   
   return right || left;
   
  }
  public static void levelOrderTraversalRightToLeft(TreeNode startNode) {
   if(null == startNode){
    return;
   }
   int level=1;
   while(levelOrderTraversalRightToLeft(startNode, level++)){
    System.out.println("---");
   }
   
  }
 
 public static void main(String[] args)
 {
  // Creating a binary tree
  TreeNode rootNode=createBinaryTree();
  System.out.println("Level Order traversal of binary tree will be left to Right -->:");
  levelOrderTraversalLeftToRight(rootNode);
  System.out.println("Level Order traversal of binary tree will be Right to Left -->:");
  levelOrderTraversalRightToLeft(rootNode);
 }
 
 public static TreeNode createBinaryTree()
 {
 
  TreeNode rootNode =new TreeNode(40);
  TreeNode node20=new TreeNode(20);
  TreeNode node10=new TreeNode(10);
  TreeNode node30=new TreeNode(30);
  TreeNode node60=new TreeNode(60);
  TreeNode node50=new TreeNode(50);
  TreeNode node70=new TreeNode(70);
 
  rootNode.left=node20;
  rootNode.right=node60;
 
  node20.left=node10;
  node20.right=node30;
 
  node60.left=node50;
  node60.right=node70;
 
  return rootNode;
 }
}




   



Level Order traversal of binary tree will be left to Right -->:
40 
20 
60 
10 
30 
50 
70 
Level Order traversal of binary tree will be Right to Left -->:
40 
---
60 
20 
---
70 
50 
30 
10 
---


   

If you find this post helpful, I would really appreciate if you can share it with your friends. Also you can check more questions and analysis here.






Previous
Next Post »