二叉排序树的相关问题
来源:互联网 发布:李逵劈鱼 源码 编辑:程序博客网 时间:2024/05/22 03:13
引用头文件:
#include <stdio.h>#include <stdlib.h>
定义其节点类型:
typedef struct node{ int key; struct node *lchild; struct node *rchild;}BSTNode;
二叉搜索树的插入:
int InsertBST(BSTNode *&p,int k)//插入关键字,插入成功返回1,否则返回0;{ if(p==NULL)//原树为空,新插入的元素为根节点; { p=(BSTNode *)malloc(sizeof(BSTNode)); p->key=k; p->lchild=p->rchild=NULL; return 1; } else if(k==p->key)//树中存在相同关键字的节点,返回0; { return 0; } else if(k<p->key) { return InsertBST(p->lchild,k); } else return INsertBST(p->rchild,k);}
二叉树的生成:
BSTNode * CreateBST(int data[],int n){ BSTNode *bt=NULL;//初始时为空树; int i=0; while(i<n) { InsertBST(bt,data[i]);//将关键字data[i]插入二叉排序树bt中; i++; } return bt;//返回建立的二叉排序树的根指针;}
二叉排序树的查找:
BSTNode * SearchBST(BSTNode *bt,int k){ if(bt==NULL||bt->key==k)//递归终结条件;成功时返回找到的元素的节点指针; { return bt; } if(k<bt->key) { return SearchBST(bt->lchild,k); } else { return SearchBST(bt->rchild,k); }}
主函数:
int main(){ int n,i; int data[1000]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&data[i]); } int item; scanf("%d",&item); BSTNode *head; head=CreateBST(data,n); BSTNode *p; p=SearchBST(head,item); return 0;}
0 0
- 二叉排序树的相关问题
- 二叉排序树的相关操作
- C语言实现二叉排序树的相关操作
- 二叉排序树相关操作
- 验证二叉排序树相关算法
- 验证二叉排序树相关算法
- 验证二叉排序树相关算法
- 数据结构与算法学习之二叉排序树及二叉排序树的相关操作
- 二叉排序树的建立以及相关操作 C语言
- 二叉排序树的相关操作(插入,查找,删除,遍历等)
- (1.2.5.4.1)二叉排序树的相关算法
- 第十四周项目1 验证二叉排序树的相关算法
- 14周项目1-3二叉排序树相关算法的验证
- 写二叉排序树的问题与指针的理解
- 二叉排序树镜像问题
- bst解题报告 - 二叉排序树的访问次数问题
- 二叉排序树与平衡二叉排序树的转化
- (3)验证二叉排序树相关算法
- SQL 行转列,列转行, 带SQL脚本方便大家验证.
- hadoop datanode启动不起来
- HTML第十八节(媒体和交互性基础一)
- Path Sum
- Hello,This is my first blog published in csdn
- 二叉排序树的相关问题
- Matlab调用外部库函数方法和注意事项
- 十三、我们应当怎样做需求分析:查询报表分析
- Android View.VISIBLE、INVISIBLE、GONE的区别
- 事件分发机制
- Info 2015-5-25 20:22:34
- android加速度传感器数据存储到txt中
- Hadoop 的一些资料总结,动态更新....
- 拓扑排序