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 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)