没有合适的资源?快使用搜索试试~ 我知道了~
该算法成功解决了二叉排序树的查找(递归和非递归),节点删除,括号表示法输出的问题,算法基本按照数据结构课本的内容来编写,比较适合初学者对二叉排序树的学习,当然改进的空间还很大
资源推荐
资源详情
资源评论
#include<stdio.h>
#include<stdlib.h>
#define maxl 10
#define true 1
#define false 0
typedef struct node{
int key;
int data;
struct node * lchild,* rchild;
}BSTNode;
//二叉树插入
int InsertBST(BSTNode *&p,int k){
if(p==NULL){
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
//printf("%d\n",p->key);
p->lchild=p->rchild=NULL;
return 1;
}
else if(k==p->key)
return 0;
else if(k<p->key)
return InsertBST(p->lchild,k);
else
return InsertBST(p->rchild,k);
}
#include<stdlib.h>
#define maxl 10
#define true 1
#define false 0
typedef struct node{
int key;
int data;
struct node * lchild,* rchild;
}BSTNode;
//二叉树插入
int InsertBST(BSTNode *&p,int k){
if(p==NULL){
p=(BSTNode *)malloc(sizeof(BSTNode));
p->key=k;
//printf("%d\n",p->key);
p->lchild=p->rchild=NULL;
return 1;
}
else if(k==p->key)
return 0;
else if(k<p->key)
return InsertBST(p->lchild,k);
else
return InsertBST(p->rchild,k);
}
//先序遍历
void preorder(BSTNode *b)
{
if(b!=NULL)
{printf("%d\t",b->key);
preorder(b->lchild);
preorder(b->rchild);
}
}
//括号表示法输出
int dispbtnode(BSTNode *b){
if(b!=NULL){
printf("%d",b->key);
if(b->lchild!=NULL||b->rchild!=NULL){
printf("(");
dispbtnode(b->lchild);
if(b->rchild!=NULL) printf(",");
dispbtnode(b->rchild);
printf(")");
}
}
}
//递归解决二叉树排序树的查找问题
BSTNode * SearchBST(BSTNode *bt,int k){
if(bt==NULL||bt->key==k)
return bt;
剩余7页未读,继续阅读
资源评论
Nicoveu
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功