C05_二叉平衡排序树的树形输出.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C05_二叉平衡排序树的树形输出

二叉树的输出:以树的形状输出二叉树,左子树在根节点的左边,右子树在根结点的右边; 另外,所建立的树为平衡二叉排序树。例如,从键盘分别输入1~6的整数,输出的树如图。 //全文选用宋体可实现对齐 #includewindows.h #includemath.h #includestdio.h #includemalloc.h #includeconio.h #define FALSE 0 #define TRUE 1 #define NULL 0 #define LH 1 //左高 #define EH 0 //等高 #define RH -1 //右高 typedef int KType; typedef int State; typedef struct{ KType key; //按key字段排序 char s[10]; //其它字段(空闲) }EType; typedef struct BBSTNode{ //二叉平衡排序树 EType data; //数据元素 int bf; //平衡因子 struct BBSTNode *lchild,*rchild; //左右孩子 }BBSNode,*BBSTree; //结点及结点指针 State EQ(KType a,KType b); //相等 State LT(KType a,KType b); //小于 State OTFSearch(BBSTree,KType,int);//仅用于查找,同时统计出查找次数 void Rrotate(BBSTree); //右旋 void Lrotate(BBSTree); //左旋 void LRbalance(BBSTree); //左平衡 void RLbalance(BBSTree); //右平衡 State InsAVL(BBSTree,EType,int); //BBST插入(若不存在) void PrintTree(BBSTree,int); //按树形输出结点 void InitBBST(BBSTree); //初始化二叉平衡排序树BBST void DestroyBBST(BBSTree); //销毁二叉平衡排序树BBST //-------------------光标处理函数的实现------------------- void HideCursor() //隐藏光标 { CONSOLE_CURSOR_INFO info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),info); } void gotoxy(int x,int y) //将光标移动到指定位置 { CONSOLE_SCREEN_BUFFER_INFO info; HANDLE h; h = GetStdHandle(STD_OUTPUT_HANDLE); GetConsoleScreenBufferInfo(h,info); csInfo.dwCursorPosition.X = x; //指定x坐标 csInfo.dwCursorPosition.Y = y; //指定y坐标 SetConsoleCursorPosition(h,info.dwCursorPosition); } State EQ(KType a,KType b) //相等比较 { if(a==b)return TRUE; else return FALSE; } State LT(KType a,KType b) //小于比较 { if(ab)return TRUE; else return FALSE; } //-----在二叉排序树T中查找关键字为key的结点----- State OTFSearch(BBSTree T,KType key,int cnt) //仅用于查找统计查找次数 { //在二叉排序树T中查找key if(!T){return FALSE;} //查找不成功 else if(EQ(key,T-data.key)) //查找成功 {cnt++;return TRUE;} else if(LT(key,T-data.key)) return OTFSearch(T-lchild,key,++cnt); //在左子树中继续查找 else return OTFSearch(T-rchild,key,++cnt); //在

文档评论(0)

tianma2015 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档