69,386
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <iostream>
#include <malloc.h>
using namespace std;
typedef char ElemType;
typedef struct node{
ElemType data;
struct node *lchild;
struct node *rchild;
}BTNode;
void CreateBTNode(BTNode **b,char *str){ //创建二叉树
BTNode *St[100],*p=NULL;
int top=-1,k,j=0;
char ch;
*b=NULL;
ch=str[j];
while(ch!='\0')
{
switch(ch)
{
case'(':top++;St[top]=p;k=1;break; //此时为左结点
case')':top--;break;
case',':k=2;break; //此时为右结点
default:p=(BTNode *)malloc(sizeof(BTNode));
p->data=ch;p->lchild=p->rchild=NULL;
if(*b==NULL) //此时p指向根节点
*b=p;
else
{
switch(k)
{
case 1:St[top]->lchild=p;break;
case 2:St[top]->rchild=p;break;
}
}
}
j++;
ch=str[j];
}
}
int height(BTNode *t)
{
int LH,RH;
if(t==NULL) return 0;
LH=height(t->lchild);
RH=height(t->rchild);
return RH>LH?RH+1:LH+1;
}
void DispBTNode(BTNode *&root)
{
if (root != NULL)
{
cout <<root-> data;
if (root-> lchild != NULL && root-> rchild != NULL)
{
cout << "( ";
DispBTNode(root-> lchild);
if (root-> rchild != NULL)
cout << ", ";
DispBTNode(root-> rchild);
cout << ")";
}
}
}
void main()
{
BTNode *b=NULL;
CreateBTNode(&b,"A(B(D(H,I),E(J,K)),C(F(L),G))");//参数‘b’无法传递???、
DispBTNode(b);
printf("height=%d\n",height(b));
}