c语言编程之二叉排序树
二叉排序树,又称为二叉查找树。它是一颗空树,或者是具有下面的性质的二叉树:
1、若它的左子树不空,则左子树上所有节点的值均小于它的根结构的值;
2、若它的右子树不空,则右子树上所有节点的值均大于它的根结构的值;
二叉排序树的建立主要由以下几个步骤组成:
1、查找
2、添加(插入)
完成了上面两个步骤一个二叉排序树就算是建立好了。
#include<stdio.h>
#include<stdlib.h> typedef int element;
typedef struct Node{
struct Node *lchild,*rchild;
element data;
}*pNode; //search a data from a sort tree
element Sear_tree(pNode T,element num,pNode f,pNode *P)
{
if(!T)
{
*P=f;
printf("Tree is empty\n");
return ;
}
else if(num==(T->data))
{
*P=T;
printf("find the data%d\n",(*P)->data);
return ;
}
else if(num<(T->data))
{
return Sear_tree(T->lchild,num,T,P);
}
else if(num>(T->data))
{
return Sear_tree(T->rchild,num,T,P);
}
} //delete a data from a sort tree
element Dele_tree()
{ } //add a data from a sort tree
element Add_tree(pNode *T,element num)
{
//S=(pNode)malloc(sizeof(struct Node));
if(!Sear_tree(*T,num,NULL,&P))
{
S=(pNode)malloc(sizeof(struct Node));
S->lchild=S->rchild=NULL;
{
*T=S;
(*T)->data=num;
printf("root data:%d\n",(*T)->data);
}
else if(num<(P->data))
{
P->lchild=S;
(P->lchild)->data=num;
}
else
{
P->rchild=S;
(P->rchild)->data=num;
}
return ;
}
else
return ;
} //init a sort tree
element Init_tree(pNode *T)
{
*T=NULL;
} //build a sort tree
element Build_tree(pNode *T)
{
element data[]={,,,,,,,,,};
element i=;
for(;i<;i++)
{
Add_tree(&T,data[i]);
}
} element main()
{
pNode P=NULL;
pNode T=NULL;
Build_tree(&P);
Sear_tree(&P,,NULL,&T);
}
c语言编程之二叉排序树的更多相关文章
- C语言编程实现Linux命令——who
C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...
- 个人c语言编程风格总结
总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...
- Linux下C语言编程实现spwd函数
Linux下C语言编程实现spwd函数 介绍 spwd函数 功能:显示当前目录路径 实现:通过编译执行该代码,可在终端中输出当前路径 代码实现 代码链接 代码托管链接:spwd.c 所需结构体.函数. ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- 第二章 C语言编程实践
上章回顾 宏定义特点和注意细节 条件编译特点和主要用处 文件包含的路径查询规则 C语言扩展宏定义的用法 第二章 第二章 C语言编程实践 C语言编程实践 预习检查 异或的运算符是什么 宏定义最主要的特点 ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- 9 本免费的 Python 语言编程书籍(转载)
9 本免费的 Python 语言编程书籍 原文地址:http://linuxtoy.org/archives/9-free-python-books.html 2010-03-03 Toy Poste ...
随机推荐
- Easyui扩展或者重载(方法和属性)
1: 使用$.fn.datagrid.defaults.editors重载默认值. 每个编辑器都有以下方法: 名称 属性 描述 init container, options 初始化编辑器并返回目标对 ...
- javaSE第十天
第十天 57 1. 形式参数和返回值的问题(理解) 57 (1)形式参数: 57 (2)返回值类型: 57 (3)链式编程 57 2. 包(理解) 57 (1)其实 ...
- SAP物料价格评估与成本计算体系
物料评估目的 核算物料领用与消耗的价值,使生产成本与产品销售成本有统一计价标准. 核算企业库存价值. 物料价格方法 移动平均价,标准价,实际价,计划价. @移动平均价: 每次物料移动后重新计算平均价, ...
- 必须会的SQL语句(二) 创建表、修改表结构、删除表
1.创建数据库表 --使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库 use testDB --创建表 Create Table tablename ( ...
- 关于fork函数中的内存复制和共享
原来刚刚开始做linux下面的多进程编程的时候,对于下面这段代码感到很奇怪, #include<unistd.h> #include<stdio.h> #include< ...
- ecshop常用语句
ecshop之中的IF语句: <select name="product_cat" id="product_cat" class="form-c ...
- C++求斐波那契数
题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...
- 全排列 (codevs 1294)题解
[题目描述] 给出一个n, 请输出n的所有全排列(按字典序输出). [样例输入] 3 [样例输出] 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 [解题思路] 听说C++有作 ...
- Delphi中nil和null的区别
nil:空指针,空地址,对象也是指针,可以object := nil;null:是一个未定义值的变量,既不是0也不代表空字符串,它是未定义的.
- 最新中国IP段获取办法与转成ROS导入格式
获取中国IP段办法 1.到APNIC获取亚太最新IP分配 http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest 2 ...