void CreateTree(BTNode* &b, char str[])
{
int i = 0;
BTNode *tstack[MaxSize], *bb;
int top = -1;
int k = 0;
while (str[i])
{
switch (str[i])
{
case '(': tstack[++top] = bb; i++; k = 1; break;
case ',': i++; k = 2; break;
case ')': i++; top--; break;
default: bb = (BTNode*)malloc(sizeof(BTNode));
bb->left = bb->right = NULL;
bb->data = str[i++];
if (k == 1)
{
tstack[top]->left = bb;
}
else if (k == 2)
{
tstack[top]->right = bb;
}
else b = bb;
}
}
}
void DispTree(BTNode* b)
{
if (b == NULL) return;
printf("%c", b->data);
if (b->left || b->right)
{
printf("%c", '(' );
DispTree(b->left);
if (b->right)
{
printf("%c", ',');
DispTree(b->right);
}
printf("%c", ')'); ///这儿要注意该句要放在if外面
}
}
///打印叶子节点
void PreorderPrintLeaves( BinTree BT )
{
if(BT==NULL) return;
if(BT->Left || BT->Right)
{
if(BT->Left) PreorderPrintLeaves(BT->Left);
if(BT->Right) PreorderPrintLeaves(BT->Right);
}
else printf(" %c",BT->Data );
}