      "* If there is no successor, do we return None?\n",
      "    * Yes\n",
      "* Can we assume we already have a Node class that keeps track of parents?\n",
      "    * Yes\n",
      "* Can we assume this fits memory?\n",
      "    * Yes"
     ]
 
</s> remove     "* Time: O(n)\n",
    "* Space: O(h), where h is the height of the tree"
 </s> add     "* Time: O(h), where h is the height of the tree\n",
    "* Space: O(h), where h is the recursion depth (tree height), or O(1) if using an iterative approach"
    "* If the input is None, should we throw an exception?\n",
    "    * Yes\n",
      "* If there is no successor, do we return None?\n",
      "    * Yes\n",
    "* If the input is None, should we throw an exception?\n",
    "    * Yes\n",
      "* Can we assume we already have a Node class that keeps track of parents?\n",
      "    * Yes\n",
      "* Can we assume this fits memory?\n",
      "    * Yes"
     ]
keep add keep keep keep keep keep
 Polish bst successor challenge and solution (#82)

Update constraints, test cases, tests, algorithm discussion, and code. 
graphs_trees/bst_successor/bst_successor_challenge.ipynb