二叉排序树1
时间:2022-04-22
本文章向大家介绍二叉排序树1,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
二叉排序树,是一种规整的二叉树。每个节点的左子树都小于他,每个节点的右子树都大于他。
二叉树的遍历:
void InOrderTree(BTree *b){
if( !b )
return;
InOrderTree(b->lchild);
printf("%d ",b->data);
InOrderTree(b->rchild);
}
二叉树的查找:
int searchTree(BTree *b,int key,BTree *f,BTree *&p){
if(!b){
p = f;
return 0;
}
else if( key == b->data){
p = b;
return 1;
}
else if(key > b->data)
return searchTree(b->rchild,key,b,p);
else
return searchTree(b->lchild,key,b,p);
}
二叉树的插入:
bool insertTree(BTree *b,int key){
BTree *p,*s;
if(!searchTree(b,key,NULL,p)){
s = (BTree *)malloc(sizeof(BTree));
s->data = key;
s->lchild = s->rchild = NULL;
if(!b){
b = s;
}
else if(key < p->data){
p->lchild = s;
}else{
p->rchild = s;
}
return true;
}else
return false;
}
全部代码:
1 #include <stdio.h>
2 #include <stdlib.h>
3 typedef struct bTree{
4 int data;
5 struct bTree *lchild,*rchild;
6 }BTree;
7
8 void initialTree(BTree *b);
9 bool insertTree(BTree *b,int key);
10 int searchTree(BTree *b,int key,BTree *f,BTree *&p);
11 void InOrderTree(BTree *b);
12
13 int main(){
14 BTree *b = (BTree *)malloc(sizeof(BTree));
15 b->data = 5;
16 b->lchild = b->rchild = NULL;
17 initialTree(b);
18 InOrderTree(b);
19 getchar();
20 return 0;
21 }
22
23 void InOrderTree(BTree *b){
24 if( !b )
25 return;
26 InOrderTree(b->lchild);
27 printf("%d ",b->data);
28 InOrderTree(b->rchild);
29 }
30
31 void initialTree(BTree *b){
32 insertTree(b,5);
33 insertTree(b,3);
34 insertTree(b,6);
35 insertTree(b,2);
36 insertTree(b,1);
37 insertTree(b,8);
38 }
39 int searchTree(BTree *b,int key,BTree *f,BTree *&p){
40 if(!b){
41 p = f;
42 printf("++%dn",p->data);
43 return 0;
44 }
45 else if( key == b->data){
46 p = b;
47 printf("--%d n",p->data);
48 printf("找到元素key:%dn",key);
49 return 1;
50 }
51 else if(key > b->data)
52 return searchTree(b->rchild,key,b,p);
53 else
54 return searchTree(b->lchild,key,b,p);
55 }
56 bool insertTree(BTree *b,int key){
57 BTree *p,*s;
58 if(!searchTree(b,key,NULL,p)){
59 printf("%d 没有出现在树中,可以插入在%d之后n",key,p->data);
60 s = (BTree *)malloc(sizeof(BTree));
61 s->data = key;
62 s->lchild = s->rchild = NULL;
63 if(!b){
64 b = s;
65 }
66 else if(key < p->data){
67 p->lchild = s;
68 }else{
69 p->rchild = s;
70 }
71 return true;
72 }else
73 return false;
74 }
运行示例:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 站长工具关键词挖掘采集,Python关键词批量挖掘采集工具
- python百度关键词相关搜索词采集,链轮查询采集exe工具
- Python最火爬虫框架Scrapy入门与实践,豆瓣电影 Top 250 数据采集
- Python爬虫三种解析方式,Pyhton360搜索排名查询
- Python关键词百度指数采集,抓包Cookie及json数据处理
- 常用的package.json,还有这么多你不知道的骚技巧
- 【词库】Python关键词筛选分类,Levenshtein编辑距离算法分词
- 爬取数据缺失的补坑,Python数据爬取的坑坑洼洼如何铲平
- 如何开发跨框架的组件
- SpringBoot系列之异步任务@Async使用教程
- 深入k8s:k8s部署&在k8s中运行第一个程序
- Java是如何实现Future模式的?万字详解!
- Tensorflow基础入门十大操作总结
- Django个人博客,三小时带你入门Django框架
- 微信公众号文章采集工具,可采集文章文字内容信息及图片