问答题
二叉树排序方法如下:1)将第一个数据放在树根。2)将随后读入的数据与树根中的数据相比较,若比树根大,则置于右子树,反之则置于左子树,建成一棵二叉树。3)利用中序遍历打印排序结果。4)试用PASCAL或C语言编写二叉树的排序程序。【浙江大学1995年】
【正确答案】正确答案:直接按照题目中思想编写程序即可。算法的代码: BiTree Creat(){ //生成并中序输出二叉排序树 scanf("%c",&ch) //ch是二叉排序树结点值的类型变量,假定是字符变量 BiTree bSt=NULL,f=NULL; while(ch!="#") { //、{},是输入结束标记 s=(BiTree)malloc(sizeof(BiNode)); //申请结点 S一>data=ch; S一>1child=S一>rchild=NULL; if(bSt==NULL) bst:S; //根结点 e1Se { //查找插入结点 P=bst; while(P) if(ch>p一>data) { f=P; p=p一>rchild;//沿右分支查,f是双亲 } e1Se { f=p; p=p一>ichild;//沿左分支查 if(f一>datarchild=S; e1Se f一>1child=S; } scanf(“%c”,&ch); //读入下一数据 }//while(ch!="#") retllrn bSt: void InOrder(BiTree bst){ //bst是二叉排序树,中序遍历输出二叉排序树 if(bSt) { InOrder(bSt一>lchild); printf(”%d”,bst->data); InOrder(bst一>rchild); } }//InOrder
【答案解析】