UVa 699 The Falling Leaves解题报告
2014-02-17 11:02
155 查看
题意:求二叉树垂直方向节点的和。
思路:由于题目给出的数据是前序遍历的,最直接的方法是建树模拟。最简单的方法是用数组模拟求和。我用的是数组模拟,以根节点为中心,遇到左树-1,遇到右树+1,向两边扩展,利用建树的递归思想。
思路:由于题目给出的数据是前序遍历的,最直接的方法是建树模拟。最简单的方法是用数组模拟求和。我用的是数组模拟,以根节点为中心,遇到左树-1,遇到右树+1,向两边扩展,利用建树的递归思想。
#include <iostream> #include <cstring> using namespace std; int ans[100]; void build(int, int); int main() { //freopen("data.txt", "r", stdin); int x; int cases = 1; while (scanf("%d", &x) && x != -1) { printf("Case %d:\n", cases++); memset(ans, 0, sizeof(ans)); build(50, x);//从中间往两边扩展 int flag = 0; for(int i = 0; i < 100; i++) { if(ans[i] != 0 && flag == 0) { printf("%d", ans[i]); flag = 1; } else if(ans[i] != 0 && flag == 1) printf(" %d", ans[i]); } printf("\n\n"); } return 0; } void build(int n, int num) { ans += num; int s; scanf("%d", &s); if(s != -1) build(n - 1, s);//读取左孩子 scanf("%d", &s); if(s != -1) build(n + 1, s);//读取右孩子 return; }
相关文章推荐
- The Falling Leaves UVA - 699
- uva 699 The Falling Leaves(建树)
- UVA 699 - The Falling Leaves
- UVA699 - The Falling Leaves
- uva_699_The Falling Leaves
- UVA 699 二叉树结合数组求求解点的值
- UVA 699 - The Falling Leaves
- UVa699-The Falling Leaves(下落的叶子)
- uva 699
- Uva 699 - The Falling Leaves
- UVA 699 The Falling Leaves
- UVA699落叶,二叉树递归左右偏移
- UVa 699 The Falling Leaves 树的深度优先搜索
- UVA 6-10 699 - The Falling Leaves
- UVA699
- uva 699 The Falling Leaves (二叉树)
- UVA - 699 The Falling Leaves (给出前序遍历,构建二叉树)
- UVa 699 The Falling Leaves
- UVa 699 下落的树叶
- UVA 699 下落的树叶 (p159, 二叉树的 DFS)