编辑代码

#include <iostream>
using namespace std;
struct biTree{
    char val;
    biTree* left;
    biTree* right;
};

void createTree(biTree** T){
    char data;
    cin >> data;
    if (data == '#') {
        *T = NULL;
        return;
    }
    else {
        biTree* node = new biTree;
        node->val = data;
        *T = node;
        createTree(&(*T)->left);
        createTree(&(*T)->right);
    }  
};

void midTree(biTree* T) {
	if (T == NULL) {
		return;
	}
	else {
		midTree(T->left);
		cout << T->val << " ";
		midTree(T->right);
	}
};

void printNifixExpression(biTree** T, int depth) {
    if (*T == NULL) {
        return;
    }
    if (depth > 1 && &(*T)->left != NULL || &(*T)->right != NULL) {
        cout << "(";
    };
    printNifixExpression(&(*T)->left, depth+1);
    cout << (*T)->val;
    printNifixExpression(&(*T)->right, depth+1);
    if (depth > 1 && &(*T)->left != NULL || &(*T)->right != NULL) {
        cout << ")";
    };
};


void printNifixExpression(biTree** T){
    printNifixExpression(&(*T), 1);
};

int main() {
	biTree* T = NULL;
    createTree(&T);
	cout << "使用中序遍历打印"<<endl;
	midTree(T);
    cout <<endl;
    printNifixExpression(&T);
	return 0;
}