【数据结构】——排序二叉树
排序二叉树即在构建二叉树的时候就对二叉树进行排序了,当中序遍历二叉树的时候即可得到一个有序的数列;
排序二叉树的规则就是:
若他的左子树不空,则左子树上所有结点的值均小于它的根结构的值;
若他的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
它的左、右子树也分别为二叉排序树;
从二叉排序树的定义也可以知道,它前提是二叉树,然后它采用了递归的定义方法,再者,它的结点间满足一定得次序关系,左子树结点一定比其双亲结点小,右子树结点一定比其双亲结点打。
代码实现如下:
1 void Create_Sort_Tree(BiTree **t, int value) 2 { 3 if(*t == NULL){ 4 *t = (BiTree *)malloc(sizeof(BiTree)); 5 (*t)->item = value; 6 (*t)->lchild = NULL; 7 (*t)->rchild = NULL; 8 } 9 else{ 10 if((*t)->item > value) 11 Create_Sort_Tree(&(*t)->lchild, value); 12 else 13 Create_Sort_Tree(&(*t)->rchild, value); 14 } 15 }
用递归的思想,在创建的时候即排序;
完整实例如下:
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct BiTree{ 5 int item; 6 struct BiTree *lchild,*rchild; 7 }BiTree; 8 9 void Create_Sort_Tree(BiTree **t, int value) 10 { 11 if(*t == NULL){ 12 *t = (BiTree *)malloc(sizeof(BiTree)); 13 (*t)->item = value; 14 (*t)->lchild = NULL; 15 (*t)->rchild = NULL; 16 } 17 else{ 18 if((*t)->item > value) 19 Create_Sort_Tree(&(*t)->lchild, value); 20 else 21 Create_Sort_Tree(&(*t)->rchild, value); 22 } 23 } 24 25 void lar(BiTree *t) 26 { 27 if(t == NULL) 28 return; 29 else{ 30 lar(t->lchild); 31 printf("%d\t",t->item); 32 lar(t->rchild); 33 } 34 35 } 36 37 int main(void) 38 { 39 int i; 40 BiTree *t = NULL; 41 int value[] = {5,8,14,36,21,1,3}; 42 for(i = 0;i < 7;i++) 43 Create_Sort_Tree(&t,value[i]); 44 lar(t); 45 printf("\n"); 46 }
转载于:https://www.cnblogs.com/ngnetboy/p/3161758.html
【数据结构】——排序二叉树相关推荐
- Java数据结构——排序二叉树
排序二叉树概念 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树.是数据结构中的一类. 对于二叉排序树的任何一个非叶子节点, 要求 ...
- 数据结构—排序二叉树
介绍: 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树.是数据结构中的一类.在一般情况下,查询效率比链表结构要高.对于二叉排序树 ...
- 数据结构之二叉搜索树/二叉查找数/有序二叉树/排序二叉树
概念~ 二叉查找树(英语:Binary Search Tree),也称二叉搜索树.有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree), ...
- Java数据结构学习——排序二叉树
目录 前言 正文 排序二叉树的特点 插入节点 删除树节点 删除的节点是叶子节点 删除的节点存在左或者右子节点 删除的节点存在左右两子节点 遍历节点 先序遍历 中序遍历 后续遍历 全部代码展示 总结 前 ...
- 【数据结构Note5】- 树和二叉树(知识点超细大全-涵盖常见算法 排序二叉树 线索二叉树 平衡二叉树 哈夫曼树)
文章目录 5.1 树和二叉树引入 5.1.1 树的概念 5.1.2 树的表示 5.1.3 树中基本术语 5.2 二叉树 5.2.1 概念 5.2.2 二叉树的性质 5.2.3 特殊的二叉树 5.2.4 ...
- 数据结构_排序二叉树(C语言)
数据结构总目录 排序二叉树 1. 结构解析 排序二叉树的结构规则很简单,只遵循一个基本规则: 那就是在二叉树中,选择任意根结点,其左子树都比根节点小,右子树都比根节点大. 排序二叉树结构图 观察如下二 ...
- (数据结构)排序二叉树
(数据结构)排序二叉树 建立并中序遍历一个排序二叉树 排序二叉树是指左子树的所有节点的值均小于它根节点的值,右子树的所有节点的值均大于它根节点的值,如下图是一棵排序二叉树 输入: 输入有一行,表示若干 ...
- 数据结构之——排序二叉树、平衡二叉树和线索二叉树
1.排序二叉树 排序二叉树(BST)也称二叉查找树,排序二叉树或者是一棵空树,或者是一棵具有下列特性的非空二叉树: (1)若左子树非空,则左子树上所有结点关键字值小于根节点的关键字值. (2)若右子树 ...
- python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...
python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...
最新文章
- Could not reliably determine the server's fully qualified domain name
- hibernate(七) hibernate中查询方式详解
- ORA-01034: ORACLE not available ORA-27101
- JSP+Servlet + JDBC 实现简单的登录验证模块
- 安卓如何运行python_如何在android上运行Python代码?
- Python中numpy中tile和repeat用法和区别
- c语言调用go函数,C中调用go中的回调函数
- JBoss Drools –入门
- 科学家风采|郑纬民:任中国计算机学会理事长四年的三点回忆
- java 乱序算法_前端面试(算法篇) - 数组乱序
- hdu 1712 ACboy needs your help
- 有钱男人更看重女人的美貌还是年轻?
- Android 递归删除文件和文件夹
- spring boot介绍及使用详解
- 图应用:骑士周游问题
- 修复电脑右下角网络图标消失的问题
- QCon北京2019大会定制书单(内有赠书福利)
- 学海无涯!java流式计算性能
- SQL的INSERT INTO和INSERT INTO SELECT语句
- 为人处世方面的一些小经验