UVa 112 - Tree Summing
2017-07-01 18:54
423 查看
题目:给你一个数和一棵树。问时钟是否存在根到叶子的路径使得路径上的数字和与已知数相等。
分析:递归、栈。
由于除了最外边的树外。其它都有两颗子树,直接递归求解就可以。
假设存在一棵子树成立,即返回成立。注意叶子节点的另可子树为空。叶子直接返回结果。
说明:注意数据中可能有负数。(POJ1145)
測试数据:
分析:递归、栈。
由于除了最外边的树外。其它都有两颗子树,直接递归求解就可以。
假设存在一棵子树成立,即返回成立。注意叶子节点的另可子树为空。叶子直接返回结果。
说明:注意数据中可能有负数。(POJ1145)
#include <iostream> #include <cstdlib> #include <cstdio> using namespace std; char input( void ) { char temp; scanf("%c",&temp); while ( temp == ' ' || temp == '\n' ) scanf("%c",&temp); return temp; } int deal( int v, int *leaf ) { int temp,value; scanf("%d",&value); temp = input(); int max = 0,l = 0,r = 0; if ( temp == '(' ) { if ( deal( v-value, &l ) ) max = 1; temp = input(); if ( deal( v-value, &r ) ) max = 1; temp = input(); if ( l && r ) max = (v==value); }else *leaf = 1; return max; } int main() { int n,temp; while ( ~scanf("%d",&n) ) { input(); if ( deal( n, &temp ) ) printf("yes\n"); else printf("no\n"); } return 0; }
測试数据:
-6 (3(-9()())()) 9 (5(4(3(2()())())())())
相关文章推荐
- POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)
- UVA - 112 Tree Summing
- uva 112 Tree Summing
- uva 112 - Tree Summing
- Tree Summing - UVa 112 简单二叉树(丧病的数据输入)
- 数据结构 uva 112-Tree Summing
- UVA 112 Tree Summing
- uva 112 - Tree Summing题解
- uva 112 Tree Summing
- uva oj 112 - Tree Summing
- UVA 112 Tree Summing
- uva_112_Tree Summing
- uva112 Tree Summing
- UVa 112 - Tree Summing
- poj 1145 (uva 112) Tree Summing
- UVa 112 - Tree Summing 二叉树构造, 二叉树路径和
- uva 112 Tree Summing
- UVA 112 & POJ 1145 Tree Summing(数据结构,二叉树,栈)
- uva112 - Tree Summing
- POJ 题目1145/UVA题目112 Tree Summing(二叉树遍历)