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.