Treap前置知识(1)——BST(超详细)
BST,全称Binary Search Tree,中文称号二叉查找树。这到底是什么?看一张图就知道了
前置知识->二叉查找树的基本性质
- 不难看出二叉查找树是二叉树(废话),节点上有值。
- 二叉查找树左子树的值比父节点小,右子树的值比父节点大
- 二叉查找树的左右子树也分别是二叉查找树
ps:下列全部知识都假设节点权值不相同。相同的情况会在Treap中讲到。
1.二叉查找树的结构
不骗你们,二叉查找树的结构和普通二叉树一模一样
struct bst
{
int ls,rs,val
//ls是i节点的左节点,rs是i节点的右节点,val是i节点的权值
}
2.二叉查找树的节点插入
二叉查找树的插入完全依赖于性质 2 2 2,当权值 x x x比当前节点的权值小时,往左节点搜索,反之,往右节点搜索。
void insert(int &k,int x)
{
if(k==0)
{
++size;
k=size;
tr[k].val=x;
return ;
}
if(x>tr[k].val)
insert(tr[k].rs,x);
if(x<tr[k].val)
insert(tr[k].ls,x);
}
解答疑惑:
Q:为什么在 k k k前面有&