3. Level and In #

Created Monday 03 February 2020

Sufficiency and necessity is proven similar to Lecture 6 and 7.

Procedure:

  1. root = in.front()
  2. in_left_subtree = in[0:rootIndex]
  3. in_right_subtree = in[rootIndex+1:]
  4. level_left = level - all occurrences of the right subtree elements - o(nlogn), sorting, 2 pointer
  5. level_right = level - all occurences of the left subtree elements - o(nogn), sorting, 2 pointer
  6. root->left = f(level_left, in_left_subtree, int l1, int l2)
  7. root->right = f(level_right, in_right_subtree, int l1, int l2)
  8. Stop if root==NULL