建立二叉排序树(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;
}
相关推荐
重庆小透明21 分钟前
力扣刷题记录【1】146.LRU缓存
java·后端·学习·算法·leetcode·缓存
开-悟23 分钟前
嵌入式编程-使用AI查找BUG的启发
c语言·人工智能·嵌入式硬件·bug
desssq41 分钟前
力扣:70. 爬楼梯
算法·leetcode·职场和发展
clock的时钟1 小时前
暑期数据结构第一天
数据结构·算法
小小小小王王王2 小时前
求猪肉价格最大值
数据结构·c++·算法
岁忧2 小时前
(LeetCode 面试经典 150 题 ) 58. 最后一个单词的长度 (字符串)
java·c++·算法·leetcode·面试·go
BIYing_Aurora2 小时前
【IPMV】图像处理与机器视觉:Lec13 Robust Estimation with RANSAC
图像处理·人工智能·算法·计算机视觉
martian6654 小时前
支持向量机(SVM)深度解析:从数学根基到工程实践
算法·机器学习·支持向量机
孟大本事要学习4 小时前
算法19天|回溯算法:理论基础、组合、组合总和Ⅲ、电话号码的字母组合
算法
SuperW4 小时前
数据结构——队列
数据结构