操作:1、插入一个数x
2、查询x再所有数中的排名
平衡树分别有以下几种:
splay(应用范围广,本质上:二叉排序数)
sbt
treap
AVL
替罪羊
遍历时用中序遍历(左->中->右)
用splay使abs(h(左子树)-h(右子树))<=1;
Splay Tree使用树的旋转操作,同时保证二叉排序树的性质不变,使被查询的条目更接近树根.
目的:使其时间复杂度最小
平衡树的意义:层数小,能在O(log n)内完成插入,查找,删除操作.
插入:
插入时,比根节点小的插在左边,大的在插在右边。
查询:
左子树的节点个数+1
查找:
x > 根节点:向右子树查找
x < 根节点:向左子树查找
x = 根节点:找到
删除:
叶子节点直接删除
有一个子树:放孩子节点
有两个子树:放左子树的最大值(因为最大,所以肯定没有右子树,把x的右子树接上
浙公网安备 33010602011771号