Tuesday, 31 October 2017

Find Height of a Tree

/**
 * Find Height of a Tree
 *
 * @author:http://javainterviewprograms.blogspot.in/
 *
 */
public class Height_Of_The_Tree {

          public static void main(String[] args) {

                   // Binary search tree

                   Binary_Tree tree = new Binary_Tree();

                   tree.addNode(50);
                   tree.addNode(40);
                   tree.addNode(60);
                   tree.addNode(30);
                   tree.addNode(45);
                   tree.addNode(55);
                   tree.addNode(54);
                   tree.addNode(20);
                   tree.addNode(10);

                   // root.PreOrderTraversal();
                   int height = HeightOfTree(tree.getRoot());
                   System.out.println("Height Of Tree:" + height);

                   // Level Order Traversal Without Stack

                   LevelOrderTraversal(tree.getRoot(), height);

          }

          public static void LevelOrderTraversal(BSTNode root, int height) 
        {
                   for (int i = 1; i <= height; i++) {
                             LevelOrderTraversalUtil(root, i, 1);
                             System.out.println();
                   }
          }

          private static void LevelOrderTraversalUtil(BSTNode root, int level, int i) 
       {
                   if (root == null)
                             return;

                   if (i == level) {
                             System.out.print(root.data + " ");
                             // System.out.print(" data:"+root.data +" "+" level:"+level);
                   }
                   i++;
                   LevelOrderTraversalUtil(root.left, level, i);
                   LevelOrderTraversalUtil(root.right, level, i);
          }

          public static int HeightOfTree(BSTNode root)
        {

                   if (root == null) {
                             return 0;
                   }

                   int letfHeight = HeightOfTree(root.left);
                   int rightHeight = HeightOfTree(root.right);

                   if (letfHeight > rightHeight)
                             return 1 + letfHeight;

                   else
                             return 1 + rightHeight;

          }

}


Output:
Height Of Tree:5
50
40 60
30 45 55
20 54
10




No comments:

Post a Comment

Difference between final, finally and finalize()?

final :Final is a keyword. Final is used to apply restrictions on class, method and variable. Final class can't be inherited, final ...