排序二叉树即在构建二叉树的时候就对二叉树进行排序了,当中序遍历二叉树的时候即可得到一个有序的数列;

  排序二叉树的规则就是:

  若他的左子树不空,则左子树上所有结点的值均小于它的根结构的值;

  若他的右子树不空,则右子树上所有结点的值均大于它的根结点的值;

  它的左、右子树也分别为二叉排序树;

  从二叉排序树的定义也可以知道,它前提是二叉树,然后它采用了递归的定义方法,再者,它的结点间满足一定得次序关系,左子树结点一定比其双亲结点小,右子树结点一定比其双亲结点打。

  代码实现如下:

 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

【数据结构】——排序二叉树相关推荐

  1. Java数据结构——排序二叉树

    排序二叉树概念 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树.是数据结构中的一类. 对于二叉排序树的任何一个非叶子节点, 要求 ...

  2. 数据结构—排序二叉树

    介绍: 二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树.是数据结构中的一类.在一般情况下,查询效率比链表结构要高.对于二叉排序树 ...

  3. 数据结构之二叉搜索树/二叉查找数/有序二叉树/排序二叉树

    概念~ 二叉查找树(英语:Binary Search Tree),也称二叉搜索树.有序二叉树(英语:ordered binary tree),排序二叉树(英语:sorted binary tree), ...

  4. Java数据结构学习——排序二叉树

    目录 前言 正文 排序二叉树的特点 插入节点 删除树节点 删除的节点是叶子节点 删除的节点存在左或者右子节点 删除的节点存在左右两子节点 遍历节点 先序遍历 中序遍历 后续遍历 全部代码展示 总结 前 ...

  5. 【数据结构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 ...

  6. 数据结构_排序二叉树(C语言)

    数据结构总目录 排序二叉树 1. 结构解析 排序二叉树的结构规则很简单,只遵循一个基本规则: 那就是在二叉树中,选择任意根结点,其左子树都比根节点小,右子树都比根节点大. 排序二叉树结构图 观察如下二 ...

  7. (数据结构)排序二叉树

    (数据结构)排序二叉树 建立并中序遍历一个排序二叉树 排序二叉树是指左子树的所有节点的值均小于它根节点的值,右子树的所有节点的值均大于它根节点的值,如下图是一棵排序二叉树 输入: 输入有一行,表示若干 ...

  8. 数据结构之——排序二叉树、平衡二叉树和线索二叉树

    1.排序二叉树 排序二叉树(BST)也称二叉查找树,排序二叉树或者是一棵空树,或者是一棵具有下列特性的非空二叉树: (1)若左子树非空,则左子树上所有结点关键字值小于根节点的关键字值. (2)若右子树 ...

  9. python处理mysql数据结构_python环境下使用mysql数据及数据结构和二叉树算法(图)...

    python环境下使用mysql数据及数据结构和二叉树算法(图): 1 python环境下使用mysql 2使用的是 pymysql库 3 开始-->创建connection-->获取cu ...

最新文章

  1. Could not reliably determine the server's fully qualified domain name
  2. hibernate(七) hibernate中查询方式详解
  3. ORA-01034: ORACLE not available ORA-27101
  4. JSP+Servlet + JDBC 实现简单的登录验证模块
  5. 安卓如何运行python_如何在android上运行Python代码?
  6. Python中numpy中tile和repeat用法和区别
  7. c语言调用go函数,C中调用go中的回调函数
  8. JBoss Drools –入门
  9. 科学家风采|郑纬民:任中国计算机学会理事长四年的三点回忆
  10. java 乱序算法_前端面试(算法篇) - 数组乱序
  11. hdu 1712 ACboy needs your help
  12. 有钱男人更看重女人的美貌还是年轻?
  13. Android 递归删除文件和文件夹
  14. spring boot介绍及使用详解
  15. 图应用:骑士周游问题
  16. 修复电脑右下角网络图标消失的问题
  17. QCon北京2019大会定制书单(内有赠书福利)
  18. 学海无涯!java流式计算性能
  19. SQL的INSERT INTO和INSERT INTO SELECT语句
  20. 为人处世方面的一些小经验

热门文章

  1. linux ip协议号,IP协议号大全
  2. jq写的项目如何部署到静态服务器_如何在阿里云服务器上部署一个Web项目
  3. mysql kingshard_浅谈 Kingshard MySQL 中间件
  4. 以后台服务的形式启动nodejs应用
  5. C语言学习笔记---动态内存分配
  6. IAR中如何实时观察变量值
  7. 计算机专业经典书籍强烈推荐
  8. eBPF学习记录(三)使用BCC开发eBPF程序
  9. keras笔记-模型保存以及tensorboard的使用
  10. spring 自动扫包代码放置的位置问题