Pro.ID1511 Title弯弯柳枝 Title链接http://10.20.2.8/oj/exercise/problem?problem_id=1511 AC4 Submit22 Ratio18.18% 时间&空间限制描述LISP是最早的高级编程语言之一,FORTRAN是当今仍在使用的最老的计算机语言之一。"表"是LISP的基本数据结构,用它可以进一步表示其它的重要数据结构,如"树"。 本题要做的是:判断用LISP语言的S-表达式来表示的一棵二叉树是否满足某个特性。 给出一棵二叉树,节点都是整数。编一个程序,判断是否存在一条从根节点到叶子节点的路径,这条路经上节点的总和等于某个值。如下图所示,这棵二叉树有4条从根到叶子的路径,它们节点的总和分别是27,22,26和18。树枝都是弯弯向下,像一棵柳树。Alice看着这棵树,不知为什么,想起了柳永的歌。 二叉树采用LISP语言的S-表达式来表示,格式如下: empty tree(空树) ::= () tree(树) ::= empty tree (integer tree tree) 上图的二叉树就可以表示为(5 (4 (11 (7 ( ) ( )) (2 ( ) ( )) ) ( )) (8 (13 ( ) ( )) (4 ( ) (1 ( ) ( )) ) ) ) 。 注意到,以这种格式来表示的话,所有叶子都是这种形式:(integer ( ) ( ) ) 。 由于空树不存在根到叶子的路径,那么,对空树查询是否存在某条路径上节点的总和等于某个数,答案都是否定的。 输入输入有多组测试数据,格式都是 "整数 树"。 每个测试数据首先是一个整数,然后是一个或多个空格作为分隔,然后是一棵二叉树,二叉树采用上述的S-表达式形式给出。 所有给出的二叉树表达式都是合法的,但表达式可能(由于太长)分布在多行,而且表达式里面可以含有空格。 输入以文件结束标志EOF作为结束。 输出Description LISP是最早的高级编程语言之一,FORTRAN是当今仍在使用的最老的计算机语言之一。"表"是LISP的基本数据结构,用它可以进一步表示其它的重要数据结构,如"树"。 本题要做的是:判断用LISP语言的S-表达式来表示的一棵二叉树是否满足某个特性。 给出一棵二叉树,节点都是整数。编一个程序,判断是否存在一条从根节点到叶子节点的路径,这条路经上节点的总和等于某个值。如下图所示,这棵二叉树有4条从根到叶子的路径,它们节点的总和分别是27,22,26和18。树枝都是弯弯向下,像一棵柳树。Alice看着这棵树,不知为什么,想起了柳永的歌。 二叉树采用LISP语言的S-表达式来表示,格式如下: empty tree(空树) ::= () tree(树) ::= empty tree (integer tree tree) 上图的二叉树就可以表示为(5 (4 (11 (7 ( ) ( )) (2 ( ) ( )) ) ( )) (8 (13 ( ) ( )) (4 ( ) (1 ( ) ( )) ) ) ) 。 注意到,以这种格式来表示的话,所有叶子都是这种形式:(integer ( ) ( ) ) 。 由于空树不存在根到叶子的路径,那么,对空树查询是否存在某条路径上节点的总和等于某个数,答案都是否定的。 Input 输入有多组测试数据,格式都是 "整数 树"。 每个测试数据首先是一个整数,然后是一个或多个空格作为分隔,然后是一棵二叉树,二叉树采用上述的S-表达式形式给出。 所有给出的二叉树表达式都是合法的,但表达式可能(由于太长)分布在多行,而且表达式里面可以含有空格。 输入以文件结束标志EOF作为结束。 Output 对每个测试用例(I 和T)输出一行结果。 每一对 I ,T (I指的是上述的整数,T指的是上述的二叉树),如果T含有一条从根到叶子的路径,其节点总和等于I,则输出"yes";如果没有这样的路径,则输出"no"。 Sample Input 22 (5(4(11(7()())(2()()))()) (8(13()())(4()(1()())))) Sample Output yes Author 样例输入22 (5(4(11(7()())(2()()))()) (8(13()())(4()(1()())))) 样例输出yes 提示作者 |