二叉查找树之创建,遍历,删除
来源:互联网 发布:自学小提琴的软件 编辑:程序博客网 时间:2024/05/29 08:39
/* 二叉查找树 数据结构定义 */
typedef struct BSTreeNode
{
int data ;
struct BSTreeNode *lchild ;
struct BSTreeNode *rchild ;
}BSTreeNode ;
/* 插入 */
void InsertBST( BSTreeNode* &t, int key )
{
if( NULL == t )
{
t = ( BSTreeNode * )malloc( sizeof(BSTreeNode) ) ;
t->lchild = NULL ;
t->rchild = NULL ;
t->data = key ;
return ;
}
if( key < t->data )
InsertBST( t->lchild, key ) ;
else
InsertBST( t->rchild, key ) ;
}
/*中序遍历*/
void InOrderPrintf( BSTreeNode* node)
{
if(node != NULL)
{
InOrderPrintf(node->lchild);
printf(" %d ", node->data);
InOrderPrintf(node->rchild);
}
}
/*前序遍历*/
void PreOrderPrintf( BSTreeNode* node )
{
if( node != NULL )
{
printf( " %d ", node->data ) ;
PreOrderPrintf( node->lchild ) ;
PreOrderPrintf( node->rchild ) ;
}
}
/*后序遍历*/
void PostOrderPrintf( BSTreeNode* node )
{
if( node != NULL )
{
PostOrderPrintf( node->lchild ) ;
PostOrderPrintf( node->rchild ) ;
printf( " %d ", node->data ) ;
}
}
/*查找某个值key*/
BSTreeNode* BST_Search( BSTreeNode *t, int key )
{
if( t == NULL )
return NULL ;
else
{
if( key == t->data )
return t ;
else if( key < t->data )
return ( BST_Search( t->lchild, key ) ) ;
else
return ( BST_Search( t->rchild, key ) ) ;
}
}
/*删除某个节点key*/
void Delete_BST( BSTreeNode *t, int key )
{
BSTreeNode *p = t ;
BSTreeNode *f = NULL ;
BSTreeNode *q, *s ;
while( p!=NULL && p->data!=key )
{
f = p ;
if( p->data > key )
p = p->lchild ;
else
p = p->rchild ;
}
if( NULL == p )
return ;
s = p ;
if( p->lchild!=NULL && p->rchild!=NULL )
{
f = p ;
s = p->lchild ;
while( s->rchild != NULL )
{
f = s ;
s = s->rchild ;
}
p->data = s->data ;
}
if( s->lchild != NULL )
q = s->lchild ;
else
q = s->rchild ;
if( NULL == f )
t = q ;
else if( f->lchild == s )
f->lchild = q ;
else
f->rchild = q ;
free( s ) ;
}
- 二叉查找树之创建,遍历,删除
- 二叉树的创建,遍历,查找,删除,插入,修改
- 二叉排序的创建,删除,遍历,查找
- 二叉查找树(插入、查找、遍历、删除.........)
- 数据结构之二叉查找树的建立遍历删除
- Java实现二叉查找树的创建、查找、插入、删除、遍历
- 二叉树查找,遍历,删除操作
- 二叉查找树的创建及遍历
- 二叉查找树的创建和遍历
- Javascript数据结构算法之二叉查找树BST(构造,遍历,查找,删除,计数)
- C++ 二叉树(创建,遍历,查找,插入,删除)『菜鸟版』
- C++ 二叉树创建、遍历访问、删除
- C++ 二叉树创建、遍历访问、删除
- 二叉树的创建和遍历、删除
- java实现二叉查找树(插入、删除、遍历、查找)
- 简易版二叉查找树(查找,插入,遍历,删除)
- 二叉搜索树的创建 查找 删除
- 查找二叉树的创建插入查找删除
- ArchSummit架构师峰会 资料下载
- mysql中主从复制延迟问题
- Android 判断SIM卡属于哪个移动运营商
- C语言札记之语句
- Linux CENTOS下编译openjdk7
- 二叉查找树之创建,遍历,删除
- 黑马程序员->基础部分 (2--语句,函数,数组
- JAVA--第五周实验--任务1--封装一类三角形对象Triangle,并实现一些求周长求面积的功能。
- Ubuntu修改root默认密码
- IOS5基础之八------单组件,多组件,依赖组件的选取器
- keil底下S3C2440的nor flash启动代码
- 黑马程序员->面向对象 (1
- 拓扑排序
- RGB序列