永发信息网

1) 实现二叉排序树,包括生成、插入,删除; 2) 对二叉排序树进行先根、中根、和后根非递归遍历; 3) 每

答案:2  悬赏:40  手机版
解决时间 2021-03-24 22:20
  • 提问者网友:川水往事
  • 2021-03-23 22:53
1) 实现二叉排序树,包括生成、插入,删除; 2) 对二叉排序树进行先根、中根、和后根非递归遍历; 3) 每
最佳答案
  • 五星知识达人网友:人類模型
  • 2021-03-23 23:53
实验四 二叉树的操作
实验目的
理解并熟悉掌握创建二叉树和实现二叉树的三种遍历

实验内容
创建二叉树和实现二叉树的三种遍历
根据提示输入字符型数据创建二叉树,输入值为所有字符型数据
输出为遍历后的每个结点的值的顺序
创建二叉树并能实现二叉树的先序、中序、后序遍历
如果输入数据为:a b c
  输出结果为:a b c
   b a c
   b c a
程序流程:main()clrscr()createtree()preorder()inorder()postorder

源程序

#include "stdlib.h"
struct tnode
{char data;
struct tnode*lchild;
struct tnode*rchild;
};
struct tnode tree;

void createtree(struct tnode*t)
{struct tnode*p=t;
char check;
if(p->lchild==NULL||p->rchild==NULL)
{printf("please enter the data:");
scanf("%c",&(p->data));
getchar();
}
if(p->lchild==NULL)
{printf("%c leftchild is null.Add? y/n\n",p->data);

scanf("%c",&check);
getchar();
if(check=='y')
{struct tnode*q=(struct tnode*)malloc(sizeof(struct tnode));
q->lchild=NULL;
q->rchild=NULL;
p->lchild=q;
createtree(q);
}
}
if(p->rchild==NULL)
{printf("%c rightchild is NULL.Add? y/n\n",p->data);
scanf("%c",&check);
getchar();
if(check=='y')
{struct tnode*q=(struct tnode*)malloc(sizeof(struct tnode));
q->lchild=NULL;
q->rchild=NULL;
p->rchild=q;
createtree(q);
}
}
}

void preorder(struct tnode*t)
{if(t)
{printf("%c ",t->data);
preorder(t->lchild);
preorder(t->rchild);
}
}

void inorder(struct tnode*t)
{if(t)
{inorder(t->lchild);
printf("%c ",t->data);
inorder(t->rchild);
}
}
void postorder(struct tnode*t)
{if(t)
{
postorder(t->lchild);
postorder(t->rchild);
printf("%c ",t->data);
}
}

void main()
{
clrscr();
tree.lchild=NULL;
tree.rchild=NULL;
createtree(&tree);
preorder(&tree);
printf("\n");
inorder(&tree);
printf("\n");
postorder(&tree);
}

使用说明
程序运行:
先输入根结点数据,例如:a
输入y或n判断是否创建左子树。输入y然后输入左子树数据
输入y或n判断是否创建右子树。输入y然后输入右子树数据
按回车可查看遍历结果并退出程序。

测试结果
运行程序,屏幕提示:
please enter the data:a
a leftchild is null.add?y/n
y
please enter the data:b
b leftchild is null.add?y/n
n
b rightchild is null.add?y/n
n
a rightchild is null.add?y/n
y
please enter the data:c
c leftchild is null.add?y/n
n
c rightchild is null.add?y/n
n
程序退出,显示结果应为:
a b c
b a c
b c a
全部回答
  • 1楼网友:一叶十三刺
  • 2021-03-24 00:54
你是广工的?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯