      "        in_order_traversal(node, self.results.add_result)\n",
      "        assert_equal(str(self.results), '[1, 2, 3, 5, 8]')\n",
      "        self.results.clear_results()\n",
      "\n",
      "        node = Node(1)\n",
      "        insert(node, 2)\n",
      "        insert(node, 3)\n",
      "        insert(node, 4)\n",
      "        insert(node, 5)\n",
      "        in_order_traversal(node, self.results.add_result)\n",
 
</s> remove     "        node = Node(1)\n",
 </s> add     "        node = insert(None, 1)\n", </s> remove         node = Node(1)
 </s> add         node = insert(None, 1) </s> remove     "* Time: O(log n)\n",
    "* Space: O(1)"
 </s> add     "* Time: O(h), where h is the height of the tree\n",
    "    * In a balanced tree, the height is O(nlogn)\n",
    "    * In the worst case we have a linked list structure with O(n)\n",
    "* Space: O(m), where m is the recursion depth, or O(1) if using an iterative approach"
    "        node = insert(None, 1)\n",
      "        in_order_traversal(node, self.results.add_result)\n",
      "        assert_equal(str(self.results), '[1, 2, 3, 5, 8]')\n",
      "        self.results.clear_results()\n",
      "\n",
    "        node = insert(None, 1)\n",
      "        insert(node, 2)\n",
      "        insert(node, 3)\n",
      "        insert(node, 4)\n",
      "        insert(node, 5)\n",
      "        in_order_traversal(node, self.results.add_result)\n",
keep keep keep keep replace keep keep keep keep keep
 Polish bst challenge and solution

Add root is None input test case.  Update time and space complexity discussion. 
graphs_trees/bst/bst_challenge.ipynb