c语言根据数组创建二叉排序树
2023-09-14 09:06:52 时间
c语言创建二叉排序树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。是数据结构中的一类。在一般情况下,查询效率比链表结构要高。
博主写了一个根据数组一次循环遍历就可以创建一个二叉排序树,比较不同的是,我们使用的二级指针去做的创建二叉排序树,非常方便,
struct tree{
int val;
int count;
struct tree *right;
struct tree *left;
};
void add_tree(struct tree **root,int val,int count){
if((*root)==NULL){
struct tree* node=(struct tree*)malloc(sizeof(struct tree));
node->val=val;
node->left=NULL;
node->right=NULL;
node->count=count;
(*root)=node;
}
else{
if((*root)->val==val){
(*root)->count++;
}
else{
if((*root)->val>val){
(*root)->count++;
add_tree(&((*root)->left),val,count);
}
else{
add_tree(&((*root)->right),val,(*root)->count+1);
}
}
}
}
void print_tree(struct tree *root){
if(root){
print_tree(root->left);
printf("%d %d -- ",root->val,root->count);
print_tree(root->right);
}
}
int reversePairs(int* nums, int numsSize){
struct tree *root=NULL;
for(int i=0;i<numsSize;i++){
add_tree(&root,nums[i],0);
// printf("%d |",nums[i]);
}
print_tree(root);
return 0;
}
相关文章
- c语言结构体数组怎么初始化,c语言结构体数组初始化「建议收藏」
- c语言运算符优先级顺序表_运算符优先级顺序
- 【R语言】因子在临床分组中的应用
- 【R语言】绘制箭头(一)
- 【说站】c语言中如何防止数组下标越界
- java中数组的最大下标是_c语言中数组下标从几开始
- 跨语言、跨模态、跨任务的大模型,驱动应用生态繁荣
- c语言之“数组”初级篇
- Go语言 WaitGroup 源码知多少
- 【C 语言】文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 )
- 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )
- 【C 语言】数据类型本质 ( 数据类型 | 数据类型本质 | 数组地址 | 数组首元素地址 )
- 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )
- 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )
- 【C 语言】二级指针 内存模型图 ( 指针数组 | 二维数组 | 自定义二级指针内存 )
- 【C 语言】数组 ( 指针退化验证 | 计算数组大小 | #define LENGTH(array) (sizeof(array) / sizeof(*array)) )
- Go语言多维数组简述
- Linux和C语言:联合开发精彩软件(linux和c语言)
- Go语言组合和方法集
- 结合的优势C语言与Linux结合,创造无穷优势(c语言与linux系统)
- 管理c语言与MySQL联合实现项目管理(c mysql 项目)
- c语言中用字符串数组显示菜单的解决方法
- 用c语言实现冒泡排序,选择排序,快速排序
- c语言合并两个已排序数组的示例(c语言数组排序)
- c语言动态数组示例
- GO语言数组和切片实例详解