def _get(self, root: TreeNode, key) -> TreeNode: if root.key == key: return root elif key < root.key: if root.hasLeftChild(): return self._get(root.leftChild, key) else: return None else: if root.hasRightChild(): return self._get(root.rightChild, key) else: return None
def _put(self, root: TreeNode, key): if root.key == key: root.key = key elif key < root.key: if root.hasLeftChild(): self._put(root.leftChild, key) else: root.leftChild = TreeNode(key, root) self._size += 1 else: if root.hasRightChild(): self._put(root.rightChild, key) else: root.rightChild = TreeNode(key, root) self._size += 1