假设以三元组(F,C,L/R)
的形式输入一棵二叉树的诸边(其中F
表示双亲结点的标识,C
标识孩子结点的标识,L/R
标识C
为F
的左孩子或右孩子),且在输入的三元组序列中,C
是按层次顺序出现的。设结点的标识是字符类型。F=^
时C
为根节点标识,若C
也为^
,则标识输入结束。试编写算法,由输入的三元组序列建立二叉树的二叉链表。
输入格式
输入为若干行,每行分别为三个字符,描述如题。
输出格式
输出共一行,为该二叉树的广义表达式。
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
typedef struct unite
{
char f;//父结点
char c;//孩子
char edge;//左孩子or右孩子
};
typedef struct Node
{
char data;
Node* lc, * rc;
}*BiTree;
typedef struct QNode
{
Node* elem;
QNode* next;
}*QueuePtr;
typedef struct Queue
{
Qu