📄 1159.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1159 on 2005-11-10 at 21:51:36 */
#include <cstdio>
class BSTree {
private:
BSTree *left;
BSTree *right;
int v;
public:
BSTree(int n) {
v = n;
}
void build();
bool travel(int, int);
};
void BSTree::build() {
int n;
while(getchar() != '(')
;
if(scanf("%d", &n) == 0) {
left = NULL;
} else {
left = new BSTree(n);
left->build();
}
while(getchar() != ')')
;
while(getchar() != '(')
;
if(scanf("%d", &n) == 0) {
right = NULL;
} else {
right = new BSTree(n);
right->build();
}
while(getchar() != ')')
;
}
bool BSTree::travel(int n, const int tar) {
bool leaf = true;
bool can = false;
n += v;
if(left != NULL) {
if(left->travel(n, tar)) {
can = true;
}
delete left;
leaf = false;
}
if(right != NULL) {
if(right->travel(n, tar)) {
can = true;
}
delete right;
leaf = false;
}
if(leaf && n == tar) {
return true;
} else {
return can;
}
}
int main()
{
BSTree *root;
int m, n;
while(scanf("%d", &n) == 1) {
root = NULL;
while(getchar() != '(')
;
if(scanf("%d", &m) == 1) {
root = new BSTree(m);
root->build();
if(root->travel(0, n)) {
printf("yes\n");
} else {
printf("no\n");
}
} else {
printf("no\n");
}
while(getchar() != ')')
;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -