先序遍历字符串而不是二叉树的先序遍历
#include<iostream>
using namespace std;


struct TreeNode {
	char data;
	TreeNode* leftchild;
	TreeNode* rightchild;
};

int index=0;

TreeNode* Preorder(string str) {
	char c = str[index++];
	if (c == '#') return NULL;
	else {
		TreeNode* p = new TreeNode;  //申请一个新结点
		p->data = c;
		p->leftchild = Preorder(str);
		p->rightchild = Preorder(str);
		return p;

	}
}

void inorder(TreeNode* t) {
	if (t == NULL) {
		return;
	}
	else{
		inorder(t->leftchild);
		cout << t->data << ' ';
		inorder(t->rightchild);
		return ;
	}
}


int main() {
	string str;
	while (cin >> str) {
		TreeNode *root = Preorder(str);  //建树并且拿到初始结点
		inorder(root);
	}

}