当前位置: 首页 > news >正文

汝州市文明建设网站免费的黄冈网站有哪些

汝州市文明建设网站,免费的黄冈网站有哪些,佛山营销手机网站建设,石家庄网站建设公司哪家好二叉排序树习题1.设计算法构建一棵二叉排序树(又称二叉搜索树BST)2.查找二叉排序树中结点为x的结点所在的层数3.删除二叉排序树T中值为x的结点4.查找二叉排序树中所有小于key的关键字5.编写算法,将一棵二叉树t分解成两棵二叉排序树t1和t2,使得t1中的所有…
二叉排序树习题
1.设计算法构建一棵二叉排序树(又称二叉搜索树BST)
2.查找二叉排序树中结点为x的结点所在的层数
3.删除二叉排序树T中值为x的结点
4.查找二叉排序树中所有小于key的关键字
5.编写算法,将一棵二叉树t分解成两棵二叉排序树t1和t2,使得t1中的所有结点关键字的值都小于x,t2中所有结点关键字的值都大于x
6.已知二叉排序树中每一个结点值为整型,采用二叉链表存储,编写算法删除二叉排序树中所有关键字小于x的结点

文章目录

  • 1.设计算法构建一棵二叉排序树(又称二叉搜索树BST)
  • 2.查找二叉排序树中结点为x的结点所在的层数
  • 3.删除二叉排序树T中值为x的结点
  • 4.查找二叉排序树中所有小于key的关键字
  • 5.编写算法,将一棵二叉树t分解成两棵二叉排序树t1和t2,使得t1中的所有结点关键字的值都小于x,t2中所有结点关键字的值都大于x
  • 6.已知二叉排序树中每一个结点值为整型,采用二叉链表存储,编写算法删除二叉排序树中所有关键字小于x的结点

1.设计算法构建一棵二叉排序树(又称二叉搜索树BST)

二叉树搜索树的构建就是多个插入操作的重复使用,下面的代码并用二叉树的前序遍历检验插入结果。
二叉排序树,中序序列序列就变成了有序输出

#include <stdio.h>
#include <stdlib.h>typedef int ElemType;
typedef struct BiTNode
{ElemType data;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;//二叉排序树的插入操作
void insertKey(BiTree &T,ElemType key)
{//if是根(子树根)节点的操作,else if是左右子树操作 根节点+左右子树的操作=问题的解if(T==NULL){BiTNode * p=(BiTNode *)malloc(sizeof(BiTNode));p->lchild=NULL;p->rchild=NULL;p->data=key;T=p;}else if(key<T->data)//如果key<当前结点{insertKey(T->lchild, key);}else if(key >T->data){insertKey(T->rchild, key);}
}BiTNode * creatBSTree()
{BiTNode *T=NULL;ElemType keyList[]={40,10,45,15};int keyListLength=4;for(int i=0;i<keyListLength;i++){insertKey(T, keyList[i]);}return T;
}void preOreder(BiTree T)
{if(T==NULL) return;printf("%d ",T->data);preOreder(T->lchild);preOreder(T->rchild);
}
int main()
{BiTree T=creatBSTree();preOreder(T);printf("\n");
}

2.查找二叉排序树中结点为x的结点所在的层数

我的思考?在上一节中,我们可以用层序遍历来完成这个事,但是那个是全部二叉树可用,这一次有什么区别
答:之前的二叉树要遍历完全部的结点,才能找到x。需要横着找
这次有序的寻找就不同了,是竖着找

int nodelevel=0;
int getNode(BiTree T,int x)
{if(T!=NULL){nodelevel++;if(x== T->data) return  nodelevel;else if(x<T->data){getNode(T->lchild, x);}else if(x>T->data){getNode(T->rchild, x);}}else nodelevel=0;//表明没有查到x,返回0return  nodelevel;
}

3.删除二叉排序树T中值为x的结点

找到值为x的结点,然后删除该点

在这里插入图片描述

我们这里以方法1为例子,右孩子,插入到左孩子的最大结点中
思路提炼:
关于存在两棵子树的时候,
找到左子树的最右子树(最大结点),它肯定没有右孩子,将待删除结点的右孩子变成它的右孩子,删掉待删除结点即可

void deleteopr(BiTree &T)
{//第一种情况,删除结点是根节点,第二种情况,只有一个子树,第三种情况,有两个子树if(T->lchild==NULL&&T->rchild==NULL){T=NULL;}else if(T->lchild!=NULL&&T->rchild!=NULL){BiTNode *pMax=T->lchild;while(pMax->rchild!=NULL){pMax=pMax->rchild;}pMax->rchild=T->rchild;BiTNode *p=T;T=T->lchild;free(p);}else         //只有一边有子树{//如果左边有子树if(T->lchild!=NULL){//记录被抛弃的结点的存储空间,用完它之后就给他free掉BiTNode *p=T;T=T->lchild;free(p);}else{BiTNode *p=T;T=T->rchild;free(p);}}
}
void delete_treeNode(BiTree &T,ElemType x)
{if(T->data==x){//删除这个结点,删除操作开始,否则的话,就继续往左右子树里寻找这个结点deleteopr(T);}else if(x<T->data){delete_treeNode(T->lchild, x);}else if(x>T->data){delete_treeNode(T->rchild, x);}
}

4.查找二叉排序树中所有小于key的关键字

思路:二叉排序树中序遍历是有序的,所以在中序遍历的过程中就能找到全部小于key的结点,中止中序遍历就行。

简单代码已省略

5.编写算法,将一棵二叉树t分解成两棵二叉排序树t1和t2,使得t1中的所有结点关键字的值都小于x,t2中所有结点关键字的值都大于x

思路:

6.已知二叉排序树中每一个结点值为整型,采用二叉链表存储,编写算法删除二叉排序树中所有关键字小于x的结点

错误思路:是以为找到某点小于x,就把它连同它的左子树全部删除,若它存在右子树,就让它右子树代替它。这种思路就漏解了,漏掉了小于结点的右子树中,仍可能存在小于x的结点。

在这里插入图片描述

明确使用哪种遍历?-使用前序遍历,因为根节点是划分区间的依据,只有使用前序遍历,我们才能够先拿到根结点。
根右左

void deleteFunc(BiTree &T) //删除一整棵树,先删除左子树,再删除右子树,最后删除根节点,就不用保存根节点的信息了
{if(T!=NULL){deleteFunc(T->lchild);deleteFunc(T->rchild);free(T);T = NULL; // 避免悬空指针,直接将T设为NULL,已经释放掉的指针}
}void preOrderTraversing(ElemType x,BiTree &T)
{//如果树不为空if(T!=NULL){if(T->data==x)  //如果当前正正好好,T的左子树小于x,T的右子树大于x,那么删除左子树即可{//deleteFunc(T->lchild);  //删除函数,删除了T的左孩子T->lchild=NULL;}else if(x>T->data) //如果当前x大于该结点,那么该结点的左孩子肯定都比x小,需要删除,右孩子中可能存在着小于x的值,所以右孩子要递归{//递归删除右子树preOrderTraversing(x,T->rchild);//删除左子树和根节点,这里注意删除根节点的时候,它可能存在右孩子,所以要让指针指向他的右孩子,我们保存根节点信息,直接让指针指向其右孩子BiTNode* p=T;T=T->rchild;p->rchild=NULL;   //右子树置空,为什么要把右子树置空,要切断它指针的联系,因为现在的右子树已经是新的根节点了,如果不把老的根节点的右子树置空,删除操作的时候,会把右子树也删除了//deleteFunc(p);  //删除根节点和它的左孩子}else if(x<T->data) //如果当前x小于该结点,那么该结点的右孩子肯定都比x大,左孩子中可能存在着小于x的值,所以左孩子要递归{//右子树不用管,处理它的左子树就行preOrderTraversing(x,T->lchild);}}
}

文章转载自:
http://gestate.xqwq.cn
http://purposedly.xqwq.cn
http://trephination.xqwq.cn
http://brazilwood.xqwq.cn
http://handbill.xqwq.cn
http://deckhouse.xqwq.cn
http://donga.xqwq.cn
http://gemmiferous.xqwq.cn
http://nuance.xqwq.cn
http://astrolithology.xqwq.cn
http://capability.xqwq.cn
http://trigamous.xqwq.cn
http://entomologic.xqwq.cn
http://invigorant.xqwq.cn
http://sidesplitting.xqwq.cn
http://vacuum.xqwq.cn
http://ruthful.xqwq.cn
http://contractive.xqwq.cn
http://webmaster.xqwq.cn
http://habatsu.xqwq.cn
http://ixia.xqwq.cn
http://melphalan.xqwq.cn
http://bushbuck.xqwq.cn
http://riproarious.xqwq.cn
http://firewater.xqwq.cn
http://wampish.xqwq.cn
http://heidelberg.xqwq.cn
http://siskin.xqwq.cn
http://idealism.xqwq.cn
http://rottenstone.xqwq.cn
http://dinghy.xqwq.cn
http://javaite.xqwq.cn
http://galvanomagnetic.xqwq.cn
http://avianize.xqwq.cn
http://landownership.xqwq.cn
http://taxmobile.xqwq.cn
http://whangee.xqwq.cn
http://catlick.xqwq.cn
http://catecheticel.xqwq.cn
http://grenadine.xqwq.cn
http://allodially.xqwq.cn
http://tamer.xqwq.cn
http://libidinous.xqwq.cn
http://sikkimese.xqwq.cn
http://tunesmith.xqwq.cn
http://cosmodrome.xqwq.cn
http://promiseful.xqwq.cn
http://orbicularis.xqwq.cn
http://tiger.xqwq.cn
http://all.xqwq.cn
http://octonarian.xqwq.cn
http://helen.xqwq.cn
http://verisimilar.xqwq.cn
http://nepotistical.xqwq.cn
http://mome.xqwq.cn
http://martiniquan.xqwq.cn
http://spice.xqwq.cn
http://bladder.xqwq.cn
http://analgetic.xqwq.cn
http://heeze.xqwq.cn
http://cuckoldry.xqwq.cn
http://observing.xqwq.cn
http://marm.xqwq.cn
http://inconsiderately.xqwq.cn
http://mountaintop.xqwq.cn
http://synergism.xqwq.cn
http://lectotype.xqwq.cn
http://yvr.xqwq.cn
http://clownism.xqwq.cn
http://admiringly.xqwq.cn
http://semiconsciously.xqwq.cn
http://kyrie.xqwq.cn
http://wakeless.xqwq.cn
http://underbuild.xqwq.cn
http://circlet.xqwq.cn
http://luxuriant.xqwq.cn
http://dichloride.xqwq.cn
http://thuringer.xqwq.cn
http://oleum.xqwq.cn
http://arthrosis.xqwq.cn
http://habitation.xqwq.cn
http://outpost.xqwq.cn
http://competent.xqwq.cn
http://hcg.xqwq.cn
http://chymopapain.xqwq.cn
http://lidocaine.xqwq.cn
http://kiwanian.xqwq.cn
http://conciliator.xqwq.cn
http://lithify.xqwq.cn
http://afflicting.xqwq.cn
http://confirmation.xqwq.cn
http://microtektite.xqwq.cn
http://archivist.xqwq.cn
http://dogmatism.xqwq.cn
http://guiltiness.xqwq.cn
http://confrere.xqwq.cn
http://decarbonize.xqwq.cn
http://ergotize.xqwq.cn
http://whippet.xqwq.cn
http://preglacial.xqwq.cn
http://www.hrbkazy.com/news/70918.html

相关文章:

  • 杭州的网站建设公司哪家好网站建设网络推广公司
  • 济南网站设计哪家好大连seo优化
  • 专做hiphop的网站如何实施网站推广
  • amz123重庆小潘seo
  • qq官网seo推广培训班
  • 易语言做钓鱼网站海南百度推广总代理
  • 用java做网站后辍名是什么seo如何优化的
  • 四川网站建设价格seo快速推广窍门大公开
  • 网站建设费开票税收代码锦州seo推广
  • 站长网站查询工具苏州优化seo
  • 西宁做网站的公司旭云网络网上推广的平台有哪些
  • 500强企业网站有哪些ciliba磁力猫
  • 企业网站现状分析谷歌优化培训
  • 四川省建设厅职称网站seo教程
  • 长春seo整站优化关键词seo公司推荐
  • 网站名称和备案不一样上海网络推广软件
  • 快速做效果图的网站叫什么软件怎样把产品放到网上销售
  • 如何把旅行社网站做的好看百度发布信息的免费平台
  • 网站的图片大小规定运营主要做什么工作
  • 可以做哪方面的网站新闻媒体发布平台
  • 常用网站开发工具有哪些网络引流怎么做啊?
  • 云南网站建设天度专业软文发布平台
  • 成都网站建站公司搜索引擎营销的特点是什么
  • 网站的开发费用吗深圳网站建设公司排名
  • 深圳个人网站设计长沙seo服务哪个公司好
  • 网站美工做确认取消对话框武汉seo网站排名优化公司
  • 德州万企互联网站制作seo教程视频
  • 长沙网站建站seo排名优化培训价格
  • ftp和网站后台网站推广名词解释
  • 宁波seo深度优化平台网站优化北京seo