博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数据结构周周练】020 二叉排序树的排序与迭代查找
阅读量:4076 次
发布时间:2019-05-25

本文共 1951 字,大约阅读时间需要 6 分钟。

 一、二叉排序树

二叉排序树可以说是数据结构中相当重要的内容之一啦,昨天给大家讲了二叉排序树的创建与遍历,包括原理以及代码。今天给大家分享的是二叉排序树的排序与查找。

二叉排序树排序从小到大排序就是中序遍历,我们通过递归来实现。

二叉排序树的特点大家都知道,左子树结点值<根结点<右子树结点,所以二叉排序树的查找原理很简单,判断当前值与查找值的关系,查找值大,查找右子树,查找值小,查找左子树,查找值与当前值一样,查找成功,查找到空结点,查找失败,说明没有该结点。

所以我们既可以通过迭代来实现,又可以通过递归来实现,我给大家分享的是迭代,欢迎大家能积极思考,在下面评论附上你的代码。

二、示例

利用递归算法将下列一组数据存入二叉排序树中,并将其从小到大排序,判断22,23,33,55是否为该二叉排序树上的点。

{ 41,22,14,35,56,23,47,28,69,10,61,12 }

 三、代码

#include
#include
using namespace std;typedef struct BiSTNode { int data; int number; struct BiSTNode *lChild, *rChild;}BiSTNode,*BiSortTree;int numData[] = { 41,22,14,35,56,23,47,28,69,10,61,12 };int length = sizeof(numData) / sizeof(int);int number = 0;int OperationBiSortTree(BiSortTree &BST,int data) { BST = (BiSortTree)malloc(sizeof(BiSTNode)); if (!BST) { cout << "空间分配失败(Allocate space failure.)" << endl; exit(OVERFLOW); } BST->data = data; BST->number = number++; BST->lChild = NULL; BST->rChild = NULL; return 1;}int EstablishBiSortTree(BiSortTree &BST) { BiSortTree p = BST; if (!BST) { OperationBiSortTree(BST, numData[number]); } else if (BST->data == numData[number]) { cout << "This data \" " << BST->data << " \" is existing.\n"; number++; return 0; } else if (BST->data > numData[number]) EstablishBiSortTree(BST->lChild); else EstablishBiSortTree(BST->rChild); return 1;}void InOrderVisitTree(BiSortTree BST) { if (BST->lChild) InOrderVisitTree(BST->lChild); cout << BST->data << " , "; if (BST->rChild) InOrderVisitTree(BST->rChild);}int SearchBiSortTree(BiSortTree BST, int data) { BiSortTree p = BST; while (p) { if (p->data == data) { cout << "This binary sort tree has the data " << data << ", and the number of the node is " << p->number << endl << endl; return 1; } else if (p->data > data) p = p->lChild; else p = p->rChild; } cout << "This binary sort tree does not have the data " << data << endl << endl; return 0;}void main() { BiSortTree BST = NULL; while (number

四、实现效果

转载地址:http://xdyni.baihongyu.com/

你可能感兴趣的文章
uSurvival 1.41多人在线生存逃杀吃鸡类游戏源码
查看>>
玩转@Git三剑客
查看>>
Unity实现c#热更新方案探究(一)
查看>>
uSurvival 1.41多人在线生存逃杀吃鸡类游戏源码
查看>>
AXURE RP8 - 实战手册 网站和APP原型制作案例精粹
查看>>
c#传不确定的参数个数,比如int型
查看>>
python3调用腾讯AI开放平台
查看>>
vector的push_back对于拷贝构造和赋值操作的调用
查看>>
OpenSees开发(一)windows 上编译opensees (使用vs2005)
查看>>
小议函数指针
查看>>
WEB服务器、应用程序服务器、HTTP服务器区别
查看>>
用户名称修改的完美解决方法
查看>>
discuz 3 头像显示不成功
查看>>
Discuz!X3.2 uc_server密码正确无法登录的解决方法
查看>>
spring boot redis 接入笔记
查看>>
ajax 跨域 session 及 spring boot分布式session
查看>>
spring boot 及 redis 实现分布式session 实践笔记
查看>>
TCP协议与UDP协议的区别
查看>>
SpringMVC与Struts2区别与比较总结
查看>>
get与post区别
查看>>