二叉搜索树

查找关键字k: 输入一个指向树根的指针和关键字k
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)
迭代版本
ITERACTIVE-TREE-SEARCH(x,k)
while x!=NIL and k!=x.key
    if k<x.key
        x=x.left
    else x=x.right
return x

查找后继: 如果节点x的右子树非空,那么x的后继恰好是x的右子树中的最左节点,如果节点x的右子树为空并且有一个后继y,那么y就是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

插入元素:从树根开始,指针x记录了一条向下的简单路径,查找要替换的输入项的NIL,保持遍历指针y(需要y是因为找到NIL时要知道z属于哪个节点)作为x的双亲
TREE-INSERT(T,z)
y=NIL
x=T.root
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   //tree is empty
elseif z.key<y.key
    y.left=z
else y.right=z


一棵有n个不同关键字的随机构建二叉搜索树的期望高度为O(lgn)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值