各种方法建立二叉树
//非递归建立二叉树
struct node{
char data;
node* left;
node* right;
};
void createtree() {
node* q;
node* tree[max];
int i, j;
char val;
node* root = NULL;
cin >> i >> val;
while (i != 0&& val != '#') { //输入结束标志
q = new node;
q->data = val;
q->left = NULL;
q->right = NULL;
tree[i] = q;
if (i == 1) {
root = q;
} else {
j = i/2;
if (i%2 == 0) {
tree[j]->left = q;
} else {
tree[j]->right = q;
}
}
cin >> i >> val;
}
}
//队列建立二叉树
BinaryTree(vector<char> & a) { // 将vector中的数据构建成二叉树
node* root;
if (a.empty()) {
root = NULL;
return;
} else {
std::queue<Node**> queue_node;
root = new Node(a[0]);
queue_node.push(&root->left);
queue_node.push(&root->right);
int i = 1