⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1159.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 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 + -