```c++
```c++
#define maxsize 1024
typedef char datatype;
struct tree {
datatype data;
tree* lnext;
tree* rnext;
};
tree* head;
tree* createtree() {
datatype ch = 0;
tree* arr[maxsize] = { 0 };
int front = 1;
int rear = 0;
tree* p = NULL;
tree* root = NULL;
while ((ch = getchar()) != '\n') {
p = (tree*)malloc(sizeof(tree));
if (p == NULL) {
cout << "pnode create fail!";
}
else {
p->data = ch;
p->lnext = NULL;
p->rnext = NULL;
rear++;
arr[rear] = p;
}
if (rear == 1) {
root = p;
}
else if (arr[front]) {
if (rear % 2 == 0) {
arr[front]->lnext = p;
}
else {
arr[front]->rnext = p;
}
if (rear % 2 == 1) {
front++;
}
}
}
return root;
}
void printftree_hlr(tree* root) {
if (root != NULL) {
cout << root->data << " ";
printftree_hlr(root->lnext);
printftree_hlr(root->rnext);
}
}
void printftree_lhr(tree* root) {
if (root != NULL) {
printftree_lhr(root->lnext);
cout << root->data << " ";
printftree_lhr(root->rnext);
}
}
void printftree_lrh(tree* root) {
if (root != NULL) {
printftree_lrh(root->lnext);
printftree_lrh(root->rnext);
cout << root->data << " ";
}
}
void printflayer(tree* root) {
if (root != NULL) {
tree* brr[maxsize] = { 0 };
tree* p = NULL;
int front = 1;
int rear = 0;
brr[front] = root;
while (front > rear) {
rear++;
p = brr[rear];
cout << p->data;
if (p->lnext != NULL) {
front++;
brr[front] = p->lnext;
}
if (p->rnext != NULL) {
front++;
brr[front] = p->rnext;
}
}
}
}
int main() {
head = createtree();
cout << "先序遍历:";
printftree_hlr(head);
cout << endl << "==============" << endl;
cout << "中序遍历:";
printftree_lhr(head);
cout << endl << "==============" << endl;
cout << "后序遍历:";
printftree_lrh(head);
cout << endl << "==============" << endl;
cout << "广度遍历:";
printflayer(head);
}
二叉树。输出面板中如果输入的字符间没有空格则是正常输出的,有空格的话就像这样,这是什么问题呢?