二叉搜索树

来源:互联网 发布:windows bitlocke解密r 编辑:程序博客网 时间:2024/05/29 12:30
查找关键字k: 输入一个指向树根的指针和关键字kTREE-SEARCH(x,k)if x==NIL or k==x.key    return xif 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.rightreturn x查找后继: 如果节点x的右子树非空,那么x的后继恰好是x的右子树中的最左节点,如果节点x的右子树为空并且有一个后继y,那么y就是x有左孩子的最低祖先。TREE-SUCCESSOR(x)if x.right!=NIL    return TREE-MINIMUM(x.right)y=x.pwhile y!=NIL and x==y.right    x=y    y=y.preturn y插入元素:从树根开始,指针x记录了一条向下的简单路径,查找要替换的输入项的NIL,保持遍历指针y(需要y是因为找到NIL时要知道z属于哪个节点)作为x的双亲TREE-INSERT(T,z)y=NILx=T.rootwhile x!=NIL    y=x    if z.key<x.key        x=x.left    else x=x.rightz.p=yif y==NIL    T.root=z   //tree is emptyelseif z.key<y.key    y.left=zelse y.right=z一棵有n个不同关键字的随机构建二叉搜索树的期望高度为O(lgn)
0 0