Meta Interview Question

- Convert sorted array to BST - Print the above tree level by level - I forgot the last question

Interview Answers

Anonymous

Nov 17, 2013

BinaryTree* sortedArrayToBST(int arr[], int start, int end) { if (start > end) return NULL; // same as (start+end)/2, avoids overflow. int mid = start + (end - start) / 2; BinaryTree *node = new BinaryTree(arr[mid]); node->left = sortedArrayToBST(arr, start, mid-1); node->right = sortedArrayToBST(arr, mid+1, end); return node; } BinaryTree* sortedArrayToBST(int arr[], int n) { return sortedArrayToBST(arr, 0, n-1); }

4

Anonymous

Feb 16, 2015

static void printBSTLevelByLevel(BSTNode root){ Queue q = new LinkedList(); q.add(root); BSTNode tmp; while(q.size() > 0){ tmp = q.remove(); System.out.println(tmp); if (tmp.getLeft() != null){ q.add(tmp.getLeft()); } if (tmp.getRight() != null){ q.add(tmp.getRight()); } } }