o0Destiny0o 2015-12-12 11:02 采纳率: 0%
浏览 1602

二叉搜索AVL树的插入算法

定义: bool Insert(AVLNode *& ptr, E& e1);
实现:bool AVLTree::Insert(AVLNode *& ptr, E& e1)
{
AVLNode *pr = NULL, *p = ptr, *q; int d;
Stack *>st;
while (p != NULL)
{
if (e1 == p->data)return false;
pr = p;st.Push(pr);
if (e1 < p->data)p = p->left;
p = p->right;
}
p = new AVLNode(e1);
if (p == NULL) { cerr << "存储空间不足!" << endl;exit(1); }
if (pr == NULL) { ptr = p;return true; }
if (e1 < pr->data)pr->left = p;
else pr->right = p;
while (st.IsEmpty() == false)
{
st.Pop(pr);
if (p == pr->left)pr->bf--;
else pr->bf++;
if (pr->bf == 0)break;
if (pr->bf == 1 || pr->bf = -1)p = pr;
else
{
d = (pr->bf < 0) ? -1 : 1;
if (pr->bf == d)
{
if (d == -1)RotateR(pr);
else RotateL(pr);
}
else
{
if (d == -1)RotateLR(pr);
else RotateRL(pr);
}
break;
}
}
if (st.IsEmpty() == true)ptr = pr;
else
{
st.getTop(q);
if (q->data > pr->data)q->left = pr;
else q->right = pr;
}
return true;
}

编译时显示无法解析的外部命令是怎么回事

  • 写回答

2条回答 默认 最新

  • Robot-S 2015-12-12 11:05
    关注

    在标准二叉搜索树中,每个新节点都会插入到树的底层的某个地方,替换某个外部节点。这种状态并不是一个绝对的要求;也可以从根节点插入,方法是先插入到相应外部节点然后在通过旋转,转到根节点,下面给出实现:
    #include
    #include

    struct Tree
    {
    int item;
    struct Tree* l;
    struct Tree* r;
    };

    struc......
    答案就在这里:二叉搜索树的根节点插入
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog