【C++】已通过

#include<string>
using namespace std;
class BTNode {
public:
	char value;//节点值
	BTNode *l;//左孩子
	BTNode *r;//右孩子
	BTNode() {
		value = '0';
		l = NULL;
		r = NULL;
	}
	~BTNode() {
		this->l = NULL; this->r = NULL;
		delete(this);
	}
};
//利用先序遍历构建二叉树
void initBT(BTNode * root) {
	
	//访问结点值
	
	//访问左子树
	char temp = cin.get();
	if (temp == '#') {
		root->l = NULL;
	}
	else {
		BTNode *btn1 = new BTNode();
		btn1->value = temp;
		root->l = btn1;
		initBT(root->l);//接着对左子树先序遍历
	}
	
	//访问右子树
	temp = cin.get();
	if (temp == '#') {
		root->r= NULL;
	}
	else {
		BTNode *btn2 = new BTNode();
		btn2->value = temp;
		root->r = btn2;
		initBT(root->r);//接着对右子树先序遍历
	}

}
//中序遍历并进行输出
void inOrderTravel(BTNode * root) {
	if (root == NULL)return;//空结点,直接返回
	//访问左子树
	if (root->l != NULL) {
		inOrderTravel(root->l);//访问左子树
	}
	//访问结点值
	cout << root->value << " ";
	//访问右子树
	if (root->r != NULL) {
		inOrderTravel(root->r);//访问右子树
	}
}
int main() {
	
	char c = cin.get();
	BTNode *root = new BTNode();
	root->value = c;
	initBT(root);//构建二叉树
	inOrderTravel(root);//中序遍历,并且输出中序序列
	cout << endl;
	return 0;
}