您好、欢迎来到现金彩票网!
当前位置:ds视讯 > 非平衡树 >

平衡二叉树的操作(高手进)

发布时间:2019-08-28 21:54 来源:未知 编辑:admin

  尽量多一点注释,因为要回答老师提出的问题!写上来前记得在电脑上编译一下,不然有错了都不知道怎么改。高手可以的话加我

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  1. 本程序是是利用平衡二叉树实现一个动态查找表,实现动态查找表的三种基本功能:查找、插入和删除。

  2. 初始,平衡二叉树为空树,可以按先序输入平衡二叉树,以输入0结束,中间以回车隔开,创建好二叉树后,可以对其查找,再对其插入,输入0结束插入,再可以对其删除,输入0结束,每次插入或删除一个结点后,更新平衡二叉树的显示。

  3. 本程序以用户和计算机的对话方式执行,根据计算机终端显示:“提示信息”下,用户可由键盘输入要执行的操作。

  数据结构D:D是具有相同特性的数据元素的集合。各个数据元素含有类型相同,可惟一标识数据元素的关键字。

  操作结果: 若DT中存在其关键字等于key的数据元素,则函数值为该元素的值或表中的位置,否则为“空”。

  操作结果: 若DT中不存在其关键字等于e. key的数据元素,则插入e到DT。

  case LH: //新结点插入在*T的左孩子的左子树上,要做单右旋处理

  case RH: //新结点插入在*T的右孩子的右子树上,要做单右旋处理

  1. 在开始对平衡二叉树的插入后,再做平衡处理时,特别是在做双向旋转平衡处理后的更新时,费了一些时间;

  2. 在做平衡二叉树的删除时,当删除结点左右孩子均在时,开始直接用左子树的最大数代替,然后直接删除结点,结果导致删除了将要删除的结点及其孩子均删除了,后来将要删除的结点用左子树的最大树代替后,对左子树的最大结点做好标记,然后再做对其做删除处理。

  3. 本程序算法基本简单,没有多大困难,就是在分析做双旋平衡处理的更新时,开始思路有些混乱,后来就好了;

  2. 进入演示程序后,按广度遍历输入平衡二叉树,中间以回车键隔开,输入0为结束;再输入要插入的结点,输入0结束,再输入要查找的结点,最后可以输入要删除的结点,输入0结束

  先按广度遍历创建平衡二叉树(亦可一个一个的插入二叉树的结点)(50 20 60 10 30 55 70 5 15 25 58 90) ,输入0结束,然后可插入结点(39),其会显示插入后的二叉树,输入0,不再插入;输入要查找结点(6),输入要删除的结点(20),其显示如下:

  }treequeue;/*定义一个队列,后面的平衡调整要用层序遍历,于是要用这个队列*/

  int getnums(int *dst)/*输入字符串并把字符串转化为一串数存入DST指向的内存中去,我们用它采集原始数据*/

  /*****唉,写上面的函数时都两个月没写过C了,所以可能上面的函数条理相当差的说*****/

  }/*递归插入的思想:如果SOURCE小于头结点,那么插入头结点的左孩子,否则插入右孩子,递归向下,直到找到空位置为止*/

  }/*递归求深的思想:首先规定好0,1两个递归出口,然后分别求左右子树的深度并返回大者*/

  /*对以*p指向的结点为根的子树,作右单旋转处理,处理之后,*p指向的结点为子树的新根*/

  /*对以*p指向的结点为根的子树,作左单旋转处理,处理之后,*p指向的结点为子树的新根*/

  /*对以*p指向的结点为根的子树,作左平衡旋转处理,处理之后,*p指向的结点为子树的新根*/

  case LH: /*新结点插在*p左子女的左子树上,需作单右旋转处理*/

  case RH: /*新结点插在*p左子女的右子树上,需作先左后右双旋处理*/

  /*对以*p指向的结点为根的子树,作左平衡旋转处理,处理之后,*p指向的结点为子树的新根*/

  case RH: /*新结点插在*p左子女的右子树上,需作单左旋转处理*/

  case LH: /*新结点插在*p左子女的左子树上,需作先右后左双旋处理*/

  展开全部平衡二叉树是:左右子树都是平衡二叉树,且左右子树的深度相差=1

  }treequeue;/*定义一个队列,后面的平衡调整要用层序遍历,于是要用这个队列*/

  int getnums(int *dst)/*输入字符串并把字符串转化为一串数存入DST指向的内存中去,我们用它采集原始数据*/

  /*****唉,写上面的函数时都两个月没写过C了,所以可能上面的函数条理相当差的说*****/

  }/*递归插入的思想:如果SOURCE小于头结点,那么插入头结点的左孩子,否则插入右孩子,递归向下,直到找到空位置为止*/

  }/*递归求深的思想:首先规定好0,1两个递归出口,然后分别求左右子树的深度并返回大者*/

http://kamexpress.net/feipinghengshu/1123.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有