• uva 11234 Expressions 表达式 建树+BFS层次遍历


    题目给出一个后缀表达式,让你求从下往上的层次遍历。

    思路:结构体建树,然后用数组进行BFS进行层次遍历,最后把数组倒着输出就行了。

    uva过了,poj老是超时,郁闷。

    代码:

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    
    const int maxn = 10001;
    char str[maxn];
    int p;
    
    struct Node {
    	char data;
    	Node* l;
    	Node* r;
    };
    
    Node* build() {
    		Node* u = (Node*) malloc (sizeof(Node*));
    		u -> data = str[p];
    		p--;
    		if (str[p] >= 'A' && str[p] <= 'Z')
    		   	u -> l = build();
    		else
    			u -> l -> data = str[p];
    		p--;
    		if (str[p] >= 'A' && str[p] <= 'Z')
    			u -> r = build();
    		else
    			u -> r -> data = str[p];
    		return u;
    }
    
    int main() {
    	int t;
    	while (scanf("%d", &t) != EOF) {
    		scanf("%s", str);
    		p = strlen(str) - 1;
    		Node* root = build();
    		int rear = 0, front = 0;
    		Node* q[maxn];
    		q[rear++] = root;
    		while (rear > front) {
    			if (q[front]) {
    				if (q[front] -> r) 
    					q[rear++] = q[front] -> r;
    				if (q[front] -> l) 
    					q[rear++] = q[front] -> l;
    				front++;
    			}
    			else
    				front++;
    		}
    		for (int i = rear - 1; i >= 0; i--)
    			printf("%c", q[i]->data);
    		printf("
    ");
    	}//while
    }


  • 相关阅读:
    uploadify上传文件代码
    事务处理拼接sql语句对数据库的操作.异常回滚
    Scrum【转】
    Redis
    mybatis
    Spring MVC
    IOC的理解(转载)
    spring IOC与AOP
    git
    python基础2
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212110.html
Copyright © 2020-2023  润新知