          return str(self.data)
  
  
  def insert(root, data):
      if data <= root.data:
          if root.left is None:
              root.left = Node(data)
              root.left.parent = root
              return root.left
          else:
 
</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" </s> remove         node = Node(1)
 </s> add         node = insert(None, 1) </s> remove     "        node = Node(1)\n",
 </s> add     "        node = insert(None, 1)\n",
    if root is None:
        root = Node(data)
        return root
          return str(self.data)
  
  
  def insert(root, data):
    if root is None:
        root = Node(data)
        return root
      if data <= root.data:
          if root.left is None:
              root.left = Node(data)
              root.left.parent = root
              return root.left
          else:
keep keep keep add keep 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.py