本應該輸出來是A(B(D(,G)),C(E,F))
#include<iostream>
using namespace std;
#include<stdlib.h>
#define MAXSIZE 100
struct BTNode
{
char data;
BTNode *lchild;
BTNode *rchild;
};
void CreateBTree(BTNode *&b,char *str)
{
BTNode *st[MAXSIZE];
BTNode *p;
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創建一個空間
p->data=https://bbs.csdn.net/topics/ch;
p->lchild=p->rchild=NULL;
if(b==NULL)
{
b=p; //將p的地址賦給了b
}
else
{
switch(k)
{
case 1:st[top]->lchild=p;//又將p的新地址付給了st[TOP]->lchild
break;
case 2:st[top]->rchild=p;
break;
}
}
}
j++;
ch=str[j];
}
}
void DispBTree(BTNode *b)
{
if(b!=NULL)
{
cout<<b->data;
if(b->lchild!=NULL||b->rchild!=NULL)
{
cout<<"(";
DispBTree(b->lchild);
if(b->rchild!=NULL)
cout<<",";
DispBTree(b->rchild);
cout<<")";
}
}
}
/*void sameDispBTree(BTNode *b,BTNode *m)
{
if(b!=NULL||m!=NULL)
{
cout<<"兩者不想等"<<endl;
}
else
{
if(b->data=https://bbs.csdn.net/topics/=m->data)
{
if(b->lchild!=NULL&&m->lchild!=NULL)
sameDispBTree(b->lchild,m->lchild);
else if(b->rchild!=NULL&&m->rchild!=NULL)
sameDispBTree(b->rchild,m->rchild);
else
cout<<"兩者不相等"<<endl;
}
else
cout<<"兩者不相等"<<endl;
}
}*/
int main()
{
BTNode *b,*m;
char str1[MAXSIZE]={'A','(','B','(','D','(',',','G',')',')',',','(','E',',','F',')',')'};
char str2[MAXSIZE]={'M','(','B','(','D','(',',','G',')',')',',','(','E',',','F',')',')'};
CreateBTree(b,str1);
CreateBTree(m,str2);
DispBTree(b);
cout<<endl;
DispBTree(m);
//sameDispBTree(b,m);
}
uj5u.com熱心網友回復:
不是要比較嗎,輸出干啥而且為什么是c轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236854.html
標籤:C++ 語言
