问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

二叉排序树的插入算法

发布网友 发布时间:2022-04-30 03:24

我来回答

1个回答

热心网友 时间:2023-10-09 14:23

首先执行查找算法,找出被插结点的父亲结点。
判断被插结点是其父亲结点的左、右儿子。将被插结点作为叶子结点插入。
若二叉树为空。则首先单独生成根结点。
注意:新插入的结点总是叶子结点。 //在二叉排序树中插入查找关键字keyvoidInsertBST(t,key){    if(t==NULL)    {        t=newBiTree;        t->lchild=t->rchild=NULL;        t->data=key;        return;     }     if(key<t->data)         InsertBST(t->lchild,key);     else         InsertBST(t->rchild,key);}//n个数据在数组d中,tree为二叉排序树根voidCreateBiTree(tree,d[],n){    tree=NULL;    for(i=0;i<n;i++)    InsertBST(tree,d[i]);}最小值二叉树c例程: #include<stdio.h>#include<malloc.h>struct priorityqueue{    intcapacity;    intsize;    struct priorityqueue* elements;}*tryit;structpriorityqueue*initialize(int maxelements){    struct priorityqueue* h;    h=malloc(sizeof(structpriorityqueue));    h->elements=malloc(sizeof(int)*(maxelements+1));    h->capacity=maxelements;    h->size=0;    h->elements[0]=-23767;    return h;}voidinsert(int x,struct priorityqueue* h){    inti;    for(i=++h->size;h->elements[i/2]>x;i/=2)    h->elements[i]=h->elements[i/2];    h->elements[i]=x;}intdeletemin(struct priorityqueue* h){    int i,child;    int minelement,lastelement;    minelement=h->elements[1];    lastelement=h->elements[h->size--];    for(i=1;i*2<=h->size;i=child)    {        child=i*2;        if(child!=h->size&&h->elements[child+1]<h->elements[child])        child++;        if(lastelement>h->elements[child])            h->elements[i]=h->elements[child];        else            break;}    h->elements[i]=lastelement;    return minelement;}main(){    tryit=initialize(10);    insert(4,tryit);    insert(5,tryit);    insert(10,tryit);    insert(3,tryit);    printf(%d\n,deletemin(tryit));    printf(%d\ndeletemin(tryit));    printf(%d\n,deletemin(tryit));    printf(%d\n,deletemin(tryit));    getchar();}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Mac怎么清除程序坞中不想要的图标? macOS的系统数据或“其他”存储是什么?如何删除 外国古建筑著名的有哪些 王者荣耀鲁班七号黑桃队长怎么样 王者荣耀鲁班七号黑桃队长1.24上线介绍_王者荣耀鲁班七号黑桃队长1.24上 ... 王者荣耀鲁班七号黑桃队长什么时候上线 王者荣耀鲁班七号黑桃队长上线时 ... 国家认可的公共营养师资格证有用吗 考公共营养师有什么用 公共营养师证有什么用途和作用 10万贷款8厘利息是多少? 数据结构课程设计(C版语言)二叉排序树算法 二叉判定树和二叉排序树有什么区别? 用C++实现二叉排序树的各种算法 设计一个读入一串整数构成一棵二叉排序树的算法 急!急!急!求神谷哲史的大象折纸方法图解的倒数第二张图片(84~105)谢谢了 实现二叉排序树的以下算法!!! 纸工大象的折法,怎么折 在东莞市大朗镇要去办营业执照个体店的要什么手续 苹果手机怎么下载python3.7.4 光字开头的股票有哪些? 关于python(3.7)的问题 还有比光正集团还垃圾的股票吗?从6月26开始基本天天跌停、垃圾中的vip的V 熊猫液晶电视屏幕尺寸如何调到最大? 光正集团股票是做什么板块的 光正集团股票为什么大跌 L GD原厂屏和熊猫屏差别 光正集团重组成功吗 熊猫4k网络电视为什么只能看到主页不能看播放视频 熊猫le55f88s-ud igzo屏4k超清智能电视好吗 世茂外滩新城到恒盛金陵湾怎么走 试编写一个算法 将升序的二叉排序树变为降序的二叉排序树 二叉排序树算法 急急急,求将两颗二叉排序树合并成一棵二叉排序树的算法,谢谢好心人! 借助二叉排序树实现排序 把已经建立的二叉树转换成二叉排序树的算法实现(C++) 二叉树与二叉排序树编译 决明子做枕头的方法 数据结构 简单算法实现在二叉排序树上查找关键值k 请教几道二叉排序树的算法题(用C写) 实现二叉排序树建立和检索算法(C语言)【急求】 决明子枕头怎样放?是有决明子的朝上还是朝下? 数据结构(Java):给出在二叉排序树上查找键值为K的算法函数 matlab的后缀为.p的文件怎么运行? matlab 中如何打开文件 请问如何将matlab的m文件转换为p文件? matlab怎么打开文件运行文件 matlab如何用命令打开文件 matlab P文件怎么查看?或转换成M文件 有没有那种,刷在墙上带图案的那种涂料, matlab的fig文件怎么打开