• 大小: 2KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-17
  • 语言: C/C++
  • 标签:

资源简介

假设以如下说明的三元组 (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/

评论

共有 条评论

相关资源