设 M 叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树的根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表用“,”分隔。如下图的三叉树的列表表示为a(b,c(f,g),e)
编程根据输入的列表生成一棵 M 叉树,并再由生成的 M 输出相应的列表。
分析:在生成 M 叉树时,在列表中遇到左括号“(”后,表示是子树的开始,即可以递归调用生成过程;输出 M 叉树时,遇到任何子树则递归调用输出过程。
#include<stdio.h>
#include<stdlib.h>
#define NUM 3 //3叉树
typedef struct node{
char value;
struct node * subtree[NUM];
}tnode;
char buffer[255], *str = buffer; //用于接收代表树的字符串buff