作者:手机用户2502858457 | 来源:互联网 | 2023-10-12 12:54
按照先序顺序输入二叉树,空的位置用#表示,比如下图的就用ABD##E##C#F##表示最后的显示效果为用括号表示的二叉树,“,”前为左孩子,后面为右孩子。下面上我拙劣的代码(* ̄︶
按照先序顺序输入二叉树,空的位置用#表示,比如下图的就用ABD##E##C#F##表示
最后的显示效果为用括号表示的二叉树,“,”前为左孩子,后面为右孩子。
下面上我拙劣的代码(* ̄︶ ̄)
#include
#include
#include
typedef struct Tree
{
struct Tree *lchild;
char data;
struct Tree *rchild;
} BiTree;
//创建二叉树
BiTree *CreatTree()
{
//按先序顺序输入一个二叉树,如果输入“#”,表明该二叉树为空。
char ch;
ch = getchar();
if (ch == '#')
{
return NULL;
}
else
{
BiTree *T;
T = (BiTree *)malloc(sizeof(BiTree));
T->data = ch;
T->lchild = CreatTree();
T->rchild = CreatTree();
return T;
}
}
//显示二叉树
void Show(BiTree *T)
{
if (!T)
return;
printf("%c", T->data);
if (T->lchild || T->rchild)
{
printf("(");
Show(T->lchild);
if (T->rchild)
{
printf(",");
Show(T->rchild);
}
printf(")");
}
}
int main()
{
BiTree *T = NULL;
printf("请按先序顺序输入一棵二叉树,如果输入“#”表示该位置为空:");
T = CreatTree();
Show(T);
printf("\n");
system("pause");
return 0;
}
测试用例
ABD##E##C#F##
结果:A(B(D,E),C(,F))
好啦~我的第一篇博客到这里就结束了 ~期待前辈们的指点。