建立二叉排序树(c语言实现)

二叉排序树(Binary Search Tree,BST)是一种二叉树,它满足以下条件:

  1. 对于每个节点,它的左子树中所有节点的值小于它本身的值。

  2. 对于每个节点,它的右子树中所有节点的值大于它本身的值。

  3. 左子树和右子树都是二叉排序树。

    void buildpaixutree(tree* t, int x)
    {
    if (*t == NULL)
    {
    t = (treenode)malloc(sizeof(treenode));
    (*t)->data = x;
    (*t)->lchild = NULL;
    (*t)->rchild = NULL;
    }
    else if ((*t)->data < x)
    {
    buildpaixutree(&((*t)->rchild), x);
    }
    else if ((*t)->data > x)
    {
    buildpaixutree(&((*t)->lchild), x);
    }
    }

二叉排序树的主要应用是实现快速查找和排序。在一个二叉排序树中,每个节点都可以看作是一个"桶",存储了一个关键字和对应的值。通过比较关键字的大小,可以快速定位到某个节点,并进行插入、删除和查找操作。另外,对二叉排序树进行中序遍历,可以得到关键字的有序序列,从而实现排序功能。

二叉排序树的缺点是它的形态高度依赖于插入顺序,如果插入的数据是有序的,那么二叉排序树将会退化成一条链表,查找效率大大降低。为了避免这个问题,常见的做法是使用平衡二叉树,如AVL树、红黑树等。

完整测试代码

复制代码
#include<stdio.h>  
#include<stdlib.h> 
#include<time.h>
typedef struct treenode
{
	int data;
	struct treenode* lchild, * rchild;
}treenode, * tree;
void buildpaixutree(tree* t, int x)
{
	if (*t == NULL)
	{
		*t = (treenode*)malloc(sizeof(treenode));
		(*t)->data = x;
		(*t)->lchild = NULL;
		(*t)->rchild = NULL;
	}
	else if ((*t)->data < x)
	{
		buildpaixutree(&((*t)->rchild), x);
	}
	else if ((*t)->data > x)
	{
		buildpaixutree(&((*t)->lchild), x);
	}
}
void paixu(tree* t)
{
	int i = 0;
	int a = 0;
	srand(time(0));
	for (i = 0; i < 10; i++)
	{	
		buildpaixutree(t,rand()%100);
	}
}
void disp(tree* t)
{
	if (*t)
	{
		disp(&(*t)->lchild);
		printf("%d ", (*t)->data);
		disp(&(*t)->rchild);
	}
}

int main()
{
	tree t = NULL;
	paixu(&t);
	printf("二叉树排序树为:");
	disp(&t);
	return 0;
}
相关推荐
Wect7 小时前
LeetCode 130. 被围绕的区域:两种解法详解(BFS/DFS)
前端·算法·typescript
NAGNIP18 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱1 天前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub1 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
强化学习凭什么比监督学习更聪明?RL的“聪明”并非来自算法,而是因为它学会了“挑食”
深度学习·算法·计算机视觉
CoovallyAIHub1 天前
YOLO-IOD深度解析:打破实时增量目标检测的三重知识冲突
深度学习·算法·计算机视觉
祈安_1 天前
C语言内存函数
c语言·后端
NAGNIP2 天前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试