Write a function that given an array representation of a binary tree will convert it into a typical tree format.

The following is a visual representation of expected input and output:

Input: [7, 3, 9, 2, 4, 8, 10,11,12,13,14]

Output:

7

/ \

3 9

/\ /\

2 4 8 10

One way to build a tree is that we know that array is like a breadth first traversal . So the series it appears is the same order we need to create tree. Also other property of tree is for a node at index “index” , left child is [2*index+1] and right child is [2*index+2].

public Node createTree(Integer[] array){ if(array == null || array.size == 0) return null; Node n = array[0]; Queue queue =new Queue(); queue.add(n); int count = 1; while(count < array.length || !queue.isEmpty()){ n.left = new Node(array[count++]); queue.add(n); if(count < array.length){ n.right = new Node(array[count++]) queue.add(n.right) } } return n; }

Advertisements