从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.要求:该二叉排序树以二叉链表存储

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/23 15:10:03
从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.要求:该二叉排序树以二叉链表存储从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序

从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.要求:该二叉排序树以二叉链表存储
从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.
要求:该二叉排序树以二叉链表存储

从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.要求:该二叉排序树以二叉链表存储
利用c语言,代码如下仅供参考:
说明:为了保证输入的数据按要求构造出想要的、唯一确定的二叉树的形状,这里输入要求利用广义表的形式,虽然会显得繁琐一点,但足以保证严谨性.否则只是单纯一串数字,树形就能千变万化,不一定的.
#include
#include
#define MaxSize 10
#define Number 30
struct BiTNode{//定义数据结构
char data;
BiTNode *lchild,*rchild;
};
void InitBtree(BiTNode * &BT){//初始化二叉树
BT=NULL;
}
void CreateBiTree(BiTNode *&BT,char *str){//建立二叉树
BiTNode *s[MaxSize];
int top=-1;
BT=NULL;
BiTNode *p=NULL;
int k, j=0;
char ch;
ch=str[j];
while(ch!='\0'){
switch(ch){
case '(':
top++;
s[top]=p;
k=1;
break;
case ')':
top--;
break;
case ',':
k=2;
break;
default:
p=(struct BiTNode *) malloc(sizeof(struct BiTNode));
p->data=ch;
p->lchild=p->rchild=NULL;
if(BT==NULL)
BT=p;
else{
if(k==1)
s[top]->lchild=p;
else
s[top]->rchild=p;
}
}
j++;
ch=str[j];
}
}
void PrintBtree(BiTNode *BT){//输出二叉树
if(BT!=NULL){
putchar(BT->data);
if(BT->lchild!=NULL||BT->rchild!=NULL){
putchar('(');
PrintBtree(BT->lchild);
if(BT->rchild!=NULL)
putchar(',');
PrintBtree(BT->rchild);
putchar(')');
}
}
}
void inorder(BiTNode *BT){//中序遍历二叉树
if(BT!=NULL){
inorder(BT->lchild );
printf("%c ",BT->data);
inorder(BT->rchild );
}
}
void DeleteBtree(BiTNode *BT){//删除二叉树的所有的节点
if(BT!=NULL){
DeleteBtree(BT->lchild );
DeleteBtree(BT->rchild );
free(BT);
}
}
void ClearBtree(BiTNode *&BT){//清除二叉树
DeleteBtree(BT);
BT=NULL;
}
void main(){
BiTNode *BT,*BT1;
char c;
printf("请以广义表形式输入一个二叉数 (如A(B(C,D),E(,F))的形式)\n\n");
char string[Number]="A(B(,C),D(E(F),G(,H)))";
/*char string[Number],ch;
int i=0;
ch=getchar();
while(ch!='\n' && i

从键盘读入一串整数构造一棵二叉排序树,并对得到的二叉排序述进行中序遍历,得到有序序列.要求:该二叉排序树以二叉链表存储 从键盘读入一个整数,判断它是奇数还是偶数 从空树起,依次插入关键字40,8,90,15,62,95,12,23,56,32,构造一棵二叉排序树.(1)画出该二叉排序树(2)画出删去该树中元素值为90的结点之后的二叉排序树. 从键盘读入10个1~100之间的整数:统计小于20的整数的个数,输出结果 并求出所有小于20个整数之和,输出从键盘读入10个1~100之间的整数:统计小于20的整数的个数,输出结果并求出所有小于20个 设有一组初始记录关键字为(45、80、48、40、22、78,要求构造一棵二叉排序树并给出构造过程? 设有一组初始记录关键字为(45,23,65,12,10,35,89,70),要求构造一棵二叉排序树并给出构造过程. 从键盘读入一个整数,判断它是奇数还是偶数6 从键盘输入一个10个整数序列,并用树型结构存储这些整数,使其构造为一棵二叉排序树;根据这个树型,得到这些整数的非递减序列;插入删除:提供一个插入函数,使其在这些整数查找数字“1 用下列插值节点数据,构造Newton插值多项式,并计算N2(0.9),N3(0.9)的值.x-2012f(x)171219要求:所需数据都从键盘读入,最后输出结果. 从空树起,依次插入关键字37,50,42,18,48,12,56,30,23,构造一棵二叉排序树.(1)画出该二叉排序树;(2)画出从(1)所得树中删除关键字为37的结点之后的二叉排序树. C语言:请编写一个程序,从键盘读入两个整数a和n,计算并输出a+aa+aaa+...+aa...a(n个a)的值.非常感谢.急用! C语言提问:从键盘上读入一个非0的整数,统计该数的位数,并倒着输出该数如.输入3784,显示位数为4位,输出4873. 写一个程序,使用for语句,计算从键盘读入的一个整 数序列的和.其中读入的第一个数,表示该整数序列1. 写一个程序,使用for语句,计算从键盘读入的一个整数序列的和.其中读入的第一个数,表示 从键盘上读入长方形的边长a,b,计算它的面积和周长并输出 统计关键字个数从键盘读入一组字符( 用JAVA 编写程序,从键盘读入10个整数存入数组,输出最大值,最小值及它们所在数组中的位置请JAVA高手指导! C语言:从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:该数各位数字的立方和 定表(40,36,55,6,64,77,9,41),按数据元素在表中的次序构造一颗二叉排序树,并求其平均查找长度.