数据结构 二叉搜索树

数据结构 二叉搜索树

查询二叉搜索树

查找

TREE-SEARCH(x,k)
    if x == NIL or k == x.key
        return x
    if k < x.key
        return TREE-SEARCH(x.left,k)
    else return TREE-SEARCH(x.right,k)

最大关键字元素和最小关键字元素

TREE-MINIMUM(x)
    while x.left != NIL
        x = x.left
    return x
TREE-MAXIMUM(x)
    while x.right != NIL
        x = x.right
    return x

后继和前驱

TREE-SUCCESSOR(x)
    if x.right != NIL
        return TREE-MINIMUM(x.right)
    y = x.p
    while y !=NIL and x == y.right
        x = y
        y = y.p
    return y

插入和删除

插入

TREE-INSERT (T,z)
    y = NIL
    x = T.next
    while x != NIL
        y = x
        if z.key < x.key
            x = x.left
        else x = x.right
    z.p = y
    if y == NIL
        T.root = z
    elseif z.key < y.key
        y.left = z
    else y.right = z

删除

TRANSPLANT用一棵以 v 为根的子树来替换一棵以 u 为根的子树时,结点 u 的双亲就变为结点 v 的双亲,并且最后 v 成为 u 的双亲的相应孩子。

TRANSPLANT (T,u,v)
    if u.p == NIL
        T.root = v
    elseif u == u.p.left
        u.p.left = v
    else u.p.right = v
    if v != NIL
        v.p = u.p
TREE-DELETE (T,z)
    if z.left == NIL
        TRANSPLANT(T,z,z.right)
    elseif z.right == NIL
        TRANSPLANT(T,z,z.left)
    else 
        y = TREE-MINIMUM(z.right)
        if y.p != z
            TRANSPLANT(T,y,y.right)
            y.right = z.right
            y.right.p = y
        TRANSPLANT(T,z,y)
        y.left = z.left
        y.left.p = y
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值