Tree: Height of a Binary Tree

  • + 0 comments

    For Java 15

    static class Node {
            Node left;
            Node right;
            int data;
            public Node(){}
            public Node(int data) {
                this.data = data;
            }
        }
        
        public static Node insert(Node root,int data) {
            Node n = new Node(data);
            Node head = root;
            if (root == null) {
                root = n;
            }
            while (head != null) {
                if (data < head.data && head.left == null) {
                    head.left = n;
                    break;
                } else if (data < head.data && head.left != null) {
                    head = head.left;
                } else if (data >= head.data && head.right != null) {
                    head = head.right;
                } else if (data >= head.data && head.right == null) {
                    head.right = n;
                    break;
                }
            }
            return root;
        }
    
        public static void main(String[] args) throws IOException {
            /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
    
    			  // Not really used, this is the num of elements to be inserted
            int size = Integer.parseInt(bufferedReader.readLine().trim());
    
            List<Integer> tree = Stream.of(bufferedReader.readLine().replaceAll("\\s+$", "").split(" "))
                .map(Integer::parseInt)
                .collect(toList());
            
            Node root = insert(null, tree.get(0));
            
            for (int i = 1; i < tree.size(); i++) {
                root = insert(root, tree.get(i));
            }
            /*
            printPreOrder(root, bufferedWriter);
            bufferedWriter.newLine();
            */
    				
            // Here is where the logic must be placed...
            int height = getHeight(root);
            bufferedWriter.write(String.valueOf(height));
            
            bufferedReader.close();
            bufferedWriter.close();
        }