问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

设计一个读入一串整数构成一棵二叉排序树的算法

发布网友 发布时间:2022-04-30 03:24

我来回答

1个回答

热心网友 时间:2023-10-09 14:23

此定义为递归式定义。

二叉排序树又称二叉查找树,它可以是一棵空树,若非空时具有下述性质: 

1、若根结点的左子树非空,则左子树上所有结点的关键字值均小于等于根结点的关键字值。 

2、若根结点的右子树非空,则右子树上所有结点的关键字值均大于等于根结点的关键字值。 

3、根结点的左、右子树也分别为二叉排序树。

二叉排序树建立说明:

当需要插入一个节点到二叉排序树时,需要先找到它的父节点。

其实 它就是用插入的节点不断的和每一个节点比较(第一次当然是和根节点比较啦),如果小于等于则进入左边子树,再与左边子树的根节点比较,直到找到它要放的位置,否则进入右子树,进行上述操作。

下面是我写的程序,是控制台下的程序:

#include<stdio.h>

#include<stdlib.h>

using namespace std;

typedef struct node

{

 int element;

 struct node* left;

 struct node* right;

}Node,*NodePtr;

void insertNode(NodePtr *head,int data)//插入节点,注意这用了指向指针的指针,很有意思

{

 if (*head==NULL)

 {

  *head=new Node;

  (*head)->element=data;

  (*head)->left=NULL;

  (*head)->right=NULL;

 }

 else

 {

  if (data<=(*head)->element)

  {

            insertNode(&((*head)->left),data);

  }

  else

  {

   insertNode(&((*head)->right),data);

  }

 }

}

NodePtr creatTree()//构造二叉排序树,控制台下输入整数,0表示结束输入

{

 NodePtr head=NULL;

 int data;

 scanf("%d",&data);

 while(data!=0)

 {

  insertNode(&head,data);

  scanf("%d",&data);

 }

 return head;

 

}

void printTree(NodePtr head)//中序遍历二叉排序树,得到有序序列

{

 if(head!=NULL)

 {

  printTree(head->left);

  printf("%d ",head->element);

  printTree(head->right);

 }

 

}

int main()

{

 NodePtr head;

 printf("请输入一串整数,空格隔开,0表示输入结束\n");

    head=creatTree();

 printf("中序遍历二叉排序树\n");

 printTree(head);

 printf("\n");

 return 0;

}

运行结果:

不知道符合你要求没,有问题可以hi我。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 急!急!急!求神谷哲史的大象折纸方法图解的倒数第二张图片(84~105)谢谢了 实现二叉排序树的以下算法!!! 纸工大象的折法,怎么折 在东莞市大朗镇要去办营业执照个体店的要什么手续 苹果手机怎么下载python3.7.4 光字开头的股票有哪些? 关于python(3.7)的问题 还有比光正集团还垃圾的股票吗?从6月26开始基本天天跌停、垃圾中的vip的V 熊猫液晶电视屏幕尺寸如何调到最大? 光正集团股票是做什么板块的 光正集团股票为什么大跌 L GD原厂屏和熊猫屏差别 光正集团重组成功吗 熊猫4k网络电视为什么只能看到主页不能看播放视频 熊猫le55f88s-ud igzo屏4k超清智能电视好吗 世茂外滩新城到恒盛金陵湾怎么走 从郑和南路金陵湾小区到龙蟠中路168号怎么走 南京金陵湾怎么样?是树人的学区房吗?只要买了房子孩子就能读书吗? 恒盛金陵湾交通方便吗?应该怎么过去? 广发南航明珠信用卡申请会不会很麻烦,是不是需要很多条件呢 用C++实现二叉排序树的各种算法 二叉判定树和二叉排序树有什么区别? 数据结构课程设计(C版语言)二叉排序树算法 二叉排序树的插入算法 试编写一个算法 将升序的二叉排序树变为降序的二叉排序树 二叉排序树算法 急急急,求将两颗二叉排序树合并成一棵二叉排序树的算法,谢谢好心人! 借助二叉排序树实现排序 把已经建立的二叉树转换成二叉排序树的算法实现(C++) 二叉树与二叉排序树编译 决明子做枕头的方法 数据结构 简单算法实现在二叉排序树上查找关键值k 请教几道二叉排序树的算法题(用C写) 实现二叉排序树建立和检索算法(C语言)【急求】 决明子枕头怎样放?是有决明子的朝上还是朝下? 数据结构(Java):给出在二叉排序树上查找键值为K的算法函数 matlab的后缀为.p的文件怎么运行? matlab 中如何打开文件 请问如何将matlab的m文件转换为p文件? matlab怎么打开文件运行文件