【发布时间】:2021-02-20 20:31:26
【问题描述】:
我试图弄清楚如何实现 insert()(将元素插入到树中)、split()(将 r 级上的树拆分为 L 和 R 两棵树)的函数的代码。包含秩 = r 的 R。对于这个作业,我傻眼了。我相信我的插入代码正确,可以正常工作:
Node *insert(Node *T, int v, int r)
{
if(T == nullptr)
{
return new Node(v);
}
int rank = T->left ? T->left->size : 0;
if (r <= rank)
{
T -> left = insert(T -> left, v, rank);
}
else
{
T -> left = insert(T -> left, v, r - rank - 1);
}
fix_size(T);
return T;
}
对于我的 split() 函数,我几乎没有任何有用的东西。有人可以解释如何完成这两个功能的算法吗?谢谢!
【问题讨论】:
标签: c++ c algorithm binary-search-tree