建立二叉樹(shù)
#include <iostream>
using namespace std;
#define STACK_MAX_SIZE 50
typedef struct node
{
char data;
node * lchild;
node * rchild;
}* BTreeNode;
void CreateBTree(BTreeNode &root,char * a)
{
BTreeNode temp;
BTreeNode Stack[STACK_MAX_SIZE];
int top =-1;
int k;
int i=0;
root = NULL;
while(a[i]!='\0')
{
switch(a[i])
{
case '#':
break;
case '(':
if(top == STACK_MAX_SIZE-1)
{
cout<<"棧溢出!程序自動(dòng)退出?。?/span>"<<endl;
exit(1);
}
else
{
top ++;
Stack[top] = temp;
k=1;
break;
}
case ')':
if(top ==-1)
{
exit(1);
} else
{
top--;
break;
}
case ',':
k = 2;
break;
default:
temp = new node();
temp->data = a[i];
temp->lchild = NULL;
temp->rchild = NULL;
if(root == NULL)
{
root = temp;
}
else
{
if(k==1)
Stack[top]->lchild = temp;
else
{
Stack[top]->rchild = temp;
}
}
}
i++;
}
}
int main()
{
char * a = "E(B(A,D(C,#)),I(G(F,H),J))";
BTreeNode root;
CreateBTree(root,a);
getchar();
return 0;
}posted on 2011-11-29 12:48 chxzwj 閱讀(1914) 評(píng)論(0) 編輯 收藏 引用 所屬分類: 常用算法



