数据结构上机实践第14周项目2 - 二叉树排序树中查找的路径
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef int KeyType; //定义关键字类型
typedef char InfoType;
typedef struct node //记录类型
{KeyType key; //关键字项InfoType data; //其他数据域struct node *lchild,*rchild; //左右孩子指针
} BSTNode;
int path[MaxSize]; //全局变量,用于存放路径
void DispBST(BSTNode *b); //函数说明
int InsertBST(BSTNode *&p,KeyType k) //在以*p为根节点的BST中插入一个关键字为k的节点
{if (p==NULL) //原树为空, 新插入的记录为根节点{p=(BSTNode *)malloc(sizeof(BSTNode));p->key=k;p->lchild=p->rchild=NULL;return 1;}else if (k==p->key)return 0;else if (k<p->key)return InsertBST(p->lchild,k); //插入到*p的左子树中elsereturn InsertBST(p->rchild,k); //插入到*p的右子树中
}
BSTNode *CreatBST(KeyType A[],int n)
//由数组A中的关键字建立一棵二叉排序树
{BSTNode *bt=NULL; //初始时bt为空树int i=0;while (i<n)InsertBST(bt,A[i++]); //将A[i]插入二叉排序树T中return bt; //返回建立的二叉排序树的根指针
}//在二叉排序树中查找,记经过的节点记录在path中,返回值为最后查找节点在path中存储的下标
int SearchBST(BSTNode *bt,KeyType k,KeyType path[],int i)
{if (bt==NULL)return i;else if (k==bt->key) //找到了节点{path[i+1]=bt->key; //输出其路径return i+1;}else{path[i+1]=bt->key;if (k<bt->key)SearchBST(bt->lchild,k,path,i+1); //在左子树中递归查找elseSearchBST(bt->rchild,k,path,i+1); //在右子树中递归查找}
}//查找并显示经过的路径
void SearchResult(BSTNode *bt, int k1)
{int r, j;r = SearchBST(bt,k1,path,-1);for (j=0; j<=r; j++)printf("%3d",path[j]);printf("\n");
}void DispBST(BSTNode *bt)
//以括号表示法输出二叉排序树bt
{if (bt!=NULL){printf("%d",bt->key);if (bt->lchild!=NULL || bt->rchild!=NULL){printf("(");DispBST(bt->lchild);if (bt->rchild!=NULL) printf(",");DispBST(bt->rchild);printf(")");}}
}int main()
{BSTNode *bt;KeyType k1=65, k2=32;int a[]= {43,91,10,18,82,65,33,59,27,73},n=10;printf("创建的BST树:");bt=CreatBST(a,n);DispBST(bt);printf("\n");printf(" 查找%d关键字:",k1);SearchResult(bt,k1);printf(" 查找%d关键字:",k2);SearchResult(bt,k2);return 0;
}
数据结构上机实践第14周项目2 - 二叉树排序树中查找的路径相关推荐
- 数据结构上机实践第14周项目1 - 验证算法(折半查找)
验证算法(折半查找) 项目要求如下: 请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90.47.100进行测试. 实现源代码如下: //*C ...
- 数据结构上机实践第14周项目1(4) - 验证算法(平衡二叉树)
验证算法(平衡二叉树) 项目要求如下: (1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造AVL树: (2)输出用括号法表示的AVL树: (3)查找关键字55: ...
- 数据结构上机实践第14周项目1(2) - 验证算法(分块查找)
验证算法(分块查找) 项目要求如下: 请用22,4,23,11,20,2,15,13,30,45,26,34,29,35,26,36,55,98,56, 74,61,90,80,96,127,158, ...
- 数据结构上机实践第14周项目3 - 是否二叉排序树
是否二叉排序树? 项目要求如下: 设计一个算法,判断给定的二叉树是否是二叉排序树. int JudgeBST()是设计的算法对应的实现. 实现源代码如下: //*Copyright (c)2017,烟 ...
- 数据结构上机实践第14周项目1(3) - 验证算法(二叉排序树)
验证算法(二叉排序树) 项目要求如下: 认真阅读并验证二叉排序树相关算法. (1)由整数序列{43,52,75,24,10,38,67,55,63,60}构造二叉排序树: (2)输出用括号法表示的 ...
- 数据结构上机实践第10周项目1 - 二叉树算法验证
二叉树算法验证 本次实践主要是对于二叉树算法的验证,达成对于算法熟练掌握的目的. 实践所用的二叉树算法库点击此处可以参考(编译环境:VC++6.0) 一.层次遍历算法验证 验证具体要求如下: 实现二叉 ...
- 第十三周 【项目2 - 二叉树排序树中查找的路径】
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:赵楷文 *完成时间:2017年11月26日 *版本号:v1.0 *问题描 ...
- 数据结构上机实践第八周项目9-广义表算法库及应用
广义表算法库及应用 为了丰富算法库,以应对各类工程的需要,本次实践将进行广义表算法库的建立以及应用. 项目要求一: 建立广义表算法库,包括: ① 头文glist.h,定义数据类型,声明函数: ② ...
- 数据结构上机实践第八周项目2- 建立链串的算法库
建立链串的算法库 一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性. 本次实践依然会用到多文件组织工程的建 ...
最新文章
- C++向量类模板(支持实数向量与复数向量的各种运算)
- C语言程序设计之编程求鸡和兔的只数,用穷举法解决
- 1. 初探MongoDB —— 介绍、安装和配置
- 鲲鹏云HCIA知识总结(二)
- ClickHouse入门
- vue form validate 多个input_Vue表单校验插件Vuerify使用详细教程及示例
- snipaste如何滚动截图_每天都在用的QQ截图,居然升级了这么多实用功能!
- python123测验答案测验3_知到app数学分析3-3测验答案查询服务
- 数学建模系列-优化模型---(一)规划模型
- 送书 | Web前端性能优化
- java 去除敏感词
- pgz-sbv-gf极狐低代码平台发布
- 龙卷风袭击广东致6死215伤 广州停
- 蓝色配色灵感 | 解读蓝色
- 本地视频做成html网页,使用HTML和JavaScript播放本地的媒体(视频音频)文件的方法...
- 泛微Ecology8.0移动端模板必填字段JS代码
- 年度回顾:短视频大逃杀
- xml组合时间串解析
- 数模分析第五天---判别分析
- 超级计算机在日常生活中有哪些有趣的应用
热门文章
- 图像椒盐噪声和高斯噪声
- 一篇让你看懂卷积神经网络
- paper reading:高光谱遥感影像空谱特征提取与分类方法研究 - 康旭东
- 实现labelme批量json_to_dataset方法
- Ubuntu用ssh连接虚拟机
- pycharm怎么修改python路径
- 【彻底解决】django migrate (mysql.W002) 【专治强迫症】
- python创建字典
- 数字个数依次叠加 s=a+aa+aaa+aaaa+aa...a
- 顺序表查找及其优化(Java)