九度oj 1184 二叉树遍历

本文介绍了一种简单的二叉树重建方法,并通过遍历来展示树的结构。使用C++实现,包括节点创建、树的构建、中序遍历及释放内存等步骤。

原题链接:http://ac.jobdu.com/problem.php?pid=1184

简单的二叉树重建,遍历.

如下:

 

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<vector>
 5 struct node{
 6     char key;
 7     node *ch[2];
 8     node(char d) : key(d) { ch[0] = ch[1] = NULL; }
 9 }*root = NULL;
10 int n = 0;
11 static int k = -1;
12 char buf[110];
13 void built(node *&p){
14     k++;
15     if (k > n) return;
16     if (buf[k] != '#'){
17         p = new node(buf[k]);
18         built(p->ch[0]);
19         built(p->ch[1]);
20     }
21 }
22 void travle(node *x){
23     if (x != NULL){
24         travle(x->ch[0]);
25         printf("%c ", x->key);
26         travle(x->ch[1]);
27     }
28 }
29 void _free(node *x){
30     if (x != NULL){
31         _free(x->ch[0]);
32         _free(x->ch[1]);
33         delete x;
34     }
35 }
36 int main(){
37 #ifdef LOCAL
38     freopen("in.txt", "r", stdin);
39     freopen("out.txt", "w+", stdout);
40 #endif
41     while (~scanf("%s", buf)){
42         k = -1, root = NULL, n = strlen(buf);
43         built(root);
44         travle(root);
45         _free(root);
46         printf("\n");
47     }
48     return 0;
49 }
View Code

 

转载于:https://www.cnblogs.com/GadyPu/p/4477570.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值