#include<stdio.h>
#include<malloc.h>
#define MAXNODE 50
#define MaxSize 50
typedef int ElemType
;
typedef struct node
{
ElemType data
;
struct node
*lchild
;
struct node
*rchild
;
}BTNode
;
void InitBTree(BTNode
*&T
)
{
T
=NULL;
}
BTNode
*CreateBTNode(char *str
)
{ BTNode
*St
[MaxSize
],*p
=NULL,*T
;
int top
=-1,tag
,j
=0;
char ch
;
T
=NULL;
ch
=str
[j
];
while (ch
!='\0')
{ switch(ch
)
{
case '(':top
++;St
[top
]=p
;tag
=1; break;
case ')':top
--;break;
case ',':tag
=2; break;
default:
p
=(BTNode
*)malloc(sizeof(BTNode
));
p
->data
=ch
;
p
->lchild
=p
->rchild
=NULL;
if (T
==NULL)
T
=p
;
else
{ switch(tag
)
{
case 1:St
[top
]->lchild
=p
;break;
case 2:St
[top
]->rchild
=p
;break;
}
}
}
j
++;ch
=str
[j
];
}
return T
;
}
BTNode
*FindNode(BTNode
*T
,ElemType x
)
{ BTNode
*p
;
if (T
==NULL)
return NULL;
else if (T
->data
==x
)
return T
;
else
{ p
=FindNode(T
->lchild
,x
);
if (p
!=NULL)
return p
;
else
return FindNode(T
->rchild
,x
);
}
}
BTNode
*LchildNode(BTNode
*p
)
{
return p
->lchild
;
}
BTNode
*RchildNode(BTNode
*p
)
{
return p
->rchild
;
}
int BTNodeDepth(BTNode
*T
)
{ int lchilddep
,rchilddep
;
if (T
==NULL)
return(0);
else
{
lchilddep
=BTNodeDepth(T
->lchild
);
rchilddep
=BTNodeDepth(T
->rchild
);
return(lchilddep
>rchilddep
)?(lchilddep
+1):(rchilddep
+1);
}
}
void visite
(BTNode
*T
)
{
if(T
==NULL)
printf("The node does not exist");
else
printf("%c",T
->data
);
}
void PrintBiTree(BTNode
*T
, int level
)
{
if(T
!= NULL)
{
PrintBiTree(T
->rchild
, level
+1);
if(level
!= 0)
{
for(int i
=0; i
<4*(level
-1); i
++)
{
printf("%s"," ");
}
printf("%s","---");
}
visite(T
);
printf("\n");
PrintBiTree(T
->lchild
,level
+1);
}
}
void InOrderTraverse(BTNode
*T
)
{ if (T
!=NULL)
{ InOrderTraverse(T
->lchild
);
visite(T
);
InOrderTraverse(T
->rchild
);
}
}
void LevelTraverse(BTNode
*T
)
{ BTNode
*p
;
BTNode
*qu
[MaxSize
];
int front
,rear
;
front
=rear
=-1;
rear
++;
qu
[rear
]=T
;
while (front
!=rear
)
{ front
=(front
+1)%MaxSize
;
p
=qu
[front
];
visite(p
);
if (p
->lchild
!=NULL)
{
rear
=(rear
+1)%MaxSize
;
qu
[rear
]=p
->lchild
;
}
if (p
->rchild
!=NULL)
{ rear
=(rear
+1)%MaxSize
;
qu
[rear
]=p
->rchild
;
}
}
}
void printfBT(BTNode
*T
)
{
if(T
!=NULL)
{
printf("%c",T
->data
);
if(T
->lchild
!=NULL||T
->rchild
!=NULL)
{
printf("(");
if(T
->rchild
=NULL)
{
printf(",");
}
{
printfBT(T
->rchild
);
printf(")");
}
}
}
}
阿里云建站,品牌保障之选 伴随着互联网的发展,为了适应社会的发展趋势,企业建站已经成为一个企 业放眼长远发展中必不可少的一环,但是网站开发与制作却成为企业迫切解决的 难题,尽管市面上有大量的建站服务平台,但阿里云建站却能在众多建站平台之 中脱颖而出。 阿里云创立于2009年,阿里巴巴集团旗下公司,是全球领先的云计算及人 工智能科技公司,为200多个国家和地区的企业、开发者和政府机构提供服务。 阿里云建站致力于集成阿里云资源,为企业提供安全、可靠的建站服务,已经超 过50万企业用户建站都选阿里云。 要确保网站顺利上线,除了搭建网站外,还需要购买域名、备案、域名解析。 如果您没有选择阿里云建站,您还需要找单独的服务商完成这些事项,费钱又费 力。选择阿里云建站就不一样了,阿里云为广大用户提供域名注册、全自助在线 免费备案、同时支持阿里云域名一键解析,一站式服务让网站上线更快速。 据了解,阿里云建站产品还支持退款服务,模板建站产品5天无理由退换, 定制建站产品不满意全额退,超级贴心。 阿里云建站主推2款建站产品: 【云·速成美站】模板建站,可视化操作自己动手建网站,售价500-2998元 【云·企业官网】设计师量身设计,一对一服务,专业省心之选,售价4980-10480 元 现在点击链接购买还有优惠哦,还等什么行动起来! https://www.aliyun.com/minisite/goods?userCode=zuniyo9i