资源简介
假设以如下说明的三元组 (F、C、L/R) 序列输入一棵二叉树的诸边(其中 F 表示双亲结点的标识,C 表示孩子结点标识,L/R 表示 C 为 F 的左孩子或右孩子),且在输入的三元组序列中,C 是按层次顺序出现的。设结点的标识是字符类型。F=‘^’时 C 为根结点标识,若 C 亦为‘^’,则表示输入结束。试编写算法,由输入的三元组序列建立二叉树的二叉链表,并以中序序列输出。
^AL ABL ACR BDL CEL
CFR DGR FHL ^^L
代码片段和文件信息
#include
#include
#define elemtype char
#define OK 1
#define error 0
typedef struct bitnode{ /*定义树中各节点的数据类型*/
elemtype data;
struct bitnode *lchild*rchild;
}bitnode*bitree;
int visit(elemtype e) /*将访问到的节点元素输出*/
{
if(printf(“%c“e))
return OK;
else return error;
}
int inordertraverse(bitree T)/*中序遍历*/
{
if(T)
{
if(inordertraverse(T->lchild))
if(visit(T->data))
if(inordertraverse(T->rchild)) return OK;
}
else
return OK;
}
int search(bitree T elemtype a bitree &x) /*利用先序遍历找寻已构成的二叉树中与含有给定元素的节点位置*/
{
if(T)
{
if(T->data==a) x=T;
if(search(T->lchildax))
if(search(T->rchildax)) return OK;
return error;
}
else return OK;
}
void form(bitree Tbitree T1elemtype aelemtype b elemtype c) /*将新输入的节点根据给定信息和已有的二叉树结合起来*/
{
bitree x;
search(Tax);
if(c==‘L‘) x->lchild=T1;
else x->rchild=T1;
}
void main()
{
char input[3];
bitree TT1;
printf(“按(FCL/
- 上一篇:一个简单的c++ 爬虫
- 下一篇:librdkafka c++ API 中文版
评论
共有 条评论