编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
代码如下:
#include <iostream>
using namespace std;struct node {char w;node *l, *r;
};void build(node *&T) {char c;cin >> c;if (c == '#')T = NULL;else {T = new node;//这一步容易忘记,要申请空间!!!T->w = c;build(T->l);build(T->r);}
}void in_order(node *T) {if (T) {in_order(T->l);cout << T->w;in_order(T->r);}
}void delete_node(node *T) {if (T == NULL)return ;else {delete_node(T->l);delete_node(T->r);delete T;}
}int main() {node *T;build(T);in_order(T);delete_node(T);//动态申请空间用完以后记得释放return 0;
}
测试结果: