1.1 插入操作
  从根节点开始,若插入的值比根节点的值小,则将其插入根节点的左子树;若比根节点的值大,则将其插入根节点的右子树。该操作可使用递归进行实现。

程序代码

def insert(self,root,val):
    if root is None:
        root = self.TreeNode(val)
    elif root.val > val:
        root.left = self.insert(root.left,val)
    elif root.val < val:
        root.right = self.insert(root.right,val)
    return root

1.2 查询操作

代码实现

def query(self,root,val):
    if root is None:
        return False
    if root.val == val:
        return True
    elif root.val > val:
        return self.query(root.left,val)
    elif root.val < val:
        return self.query(root.right,val)

1.3 查找二叉搜索树中的最大(小值)

代码实现

def findmin(self,root):
    if root is None:
        return False
    if root.left:
        return self.findmin(root.left)
    else:
        return root

1.4 删除某节点 **
**代码实现

def delNode(self, root, val):
    '''删除二叉搜索树中值为val的点'''
    if root == None:
    return 
    if val < root.val:
    root.left = self.delNode(root.left, val)
    elif val > root.val:
    root.right = self.delNode(root.right, val)
    # 当val == root.val时,分为三种情况:只有左子树或者只有右子树、有左右子树、即无左子树又无右子树
    else:
    if root.left and root.right:
        # 既有左子树又有右子树,则需找到右子树中最小值节
        temp = self.findMin(root.right)
        root.val = temp.val
        # 再把右子树中最小值节点删除
        root.right = self.delNode(root.right, temp.val)
    elif root.right == None and root.left == None:
                # 左右子树都为空
        root = None
    elif root.right == None:
                # 只有左子树
        root = root.left
    elif root.left == None:
                # 只有右子树
        root = root.right
    return root