uva 699(二叉树)
来源:互联网 发布:ubuntu 14.04 启动器 编辑:程序博客网 时间:2024/06/05 12:42
题解:这道题在建树时要把位置的参数传递以更新每叠叶子的和,题目中有说明叠数不会超过80,就从位置40开始把和存到数组。
#include <stdio.h>#include <string.h>const int N = 85;struct Node { int val; Node* left; Node* right; Node () { val = -1; left = right = NULL; }};int ans1[N], ans2[N];Node* build(int pos, int a) { int n; char c; Node* node = new Node; scanf("%d%c", &n, &c); if(n != -1) { node -> val = n; ans1[pos] += n; node -> left = build(pos - 1, 1); node -> right = build(pos + 1, 2); } else { if (a == 1) pos += 1; else if (a == 2) pos -= 1; return NULL; } return node;}void Delete(Node* node) { if (node == NULL) return; if (node -> left != NULL) Delete(node -> left); if (node -> right != NULL) Delete(node -> right); delete node;}int main() { int cases = 1; char c; Node* root; while (1) { memset(ans1, 0, sizeof(ans1)); root = build(40, 0); if (root == NULL) break; else { printf("Case %d:\n", cases++); int k = 0; for (int i = 0; i < N; i++) if (ans1[i] > 0) { ans2[k++] = ans1[i]; } for (int i = 0; i < k - 1; i++) printf("%d ", ans2[i]); printf("%d\n\n", ans2[k - 1]); Delete(root); } } return 0;}
0 0
- uva 699(二叉树)
- Uva 699 - The Falling Leaves//二叉树
- UVA - 699 The Falling Leaves 二叉树
- uva 699 The Falling Leaves 二叉树
- uva 112(二叉树)
- uva 548(二叉树)
- uva 712(二叉树)
- uva 297(二叉树)
- uva 839(二叉树)
- uva 122 二叉树
- 【数组二叉树】UVA
- UVa 11020 排序二叉树
- uva 10701(简单二叉树)
- UVA 712(二叉树模拟)
- 二叉树 UVA 548 Tree
- uva 1354(二叉树+暴力)
- uva-536 二叉树重建
- UVA - 548 Tree 二叉树
- javaScript模块规范、AMD、CMD
- HDOJ 题目2716 Message Decowding(水题)
- 单词按照字典序排序
- 黑马程序员 (ARC)内存管理总结 ----- 我这是学会了嘛
- HDU 1518 Square
- uva 699(二叉树)
- WebSerivice添加进程
- 关于数学的常用函数
- boost库随机函数中的bug
- 11991 - Easy Problem from Rujia Liu?(基础数据结构)
- 开源组件SlidingMenu,侧拉菜单的使用
- oracle data file header replace(测)
- css透明度的设置 (兼容所有浏览器)
- 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)