#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct TREE{
int data;
struct TREE*lchild;
struct TREE*rchild;
}tree;
//搜素二叉树的查找
tree* bstsearch(tree* T,int data){
if(T){
if(T->data==data){
return T;
}else if(data<T->data){
return bstsearch(T->lchild,data);
}else{
return bstsearch(T->rchild,data);
}
}else{
return NULL;
}
}
//搜素二叉树的插入
void bstinsert(tree**T,int data){
if(*T==NULL){
//节点为空,则创建一个节点
*T=(tree*)malloc(sizeof(tree));
(*T)->data=data;
(*T)->lchild=NULL;
(*T)->rchild=NULL;
}else if((*T)->data==data){
//如果要插入的数已经在树中了则不用插入
return;
}else if(data < (*T)->data ){
//如果要插入的数比当前节点的数小,则往左子树中找
bstinsert(&(*T)->lchild,data);
}else{
//如果要插入的数比当前节点的数大,则往右子树中找
bstinsert(&(*T)->rchild,data);
}
}
void preOrder(tree* T) {
if (T) {
printf("%d ", T -> data);
preOrder(T -> lchild);
preOrder(T -> rchild);
}
}
int main(){
tree*T;
int nums[6]={8,6,10,9,11,23};
for(int i=0;i<6;i++){
bstinsert(&T,nums[i]);
}
preOrder(T);
return 0;
}
二叉搜索树
最新推荐文章于 2024-11-06 11:05:01 发布
本文介绍了在C语言中使用结构体定义二叉树,并展示了如何实现二叉搜索树的查找和插入操作,以及预序遍历的功能。
摘要由CSDN通过智能技术生成