G - 二叉搜索树 HDU - 3791

G - 二叉搜索树 HDU - 3791
注意2,4,8规律 4=2*2 6=3*2 7=3*2+1
在这里插入图片描述



//题解:把给的第一组例子构造成一个二叉搜索树
//接下来每一组样例都构造一下,比较后面的二叉搜索树和前面的是不是都一样
#include <cstdio> 
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

char s[13], tree0[103], tree1[103];

void insert(char tree[], int val)
{
	int root = 1;//根设置为1;
	while (tree[root] != '\0'){
		if (val < tree[root]){
			root <<= 1;//左子树乘2 
		}
		else{
			root <<= 1;
			++root;//乘2再加一; 
		}
	}
	tree[root] = val; 
}

int main()
{
	int n;
	
	while (scanf("%d", &n)&& n){
		memset(tree0, 0, sizeof tree0);
		scanf("%s", s);
		for (int i = 0; s[i] != '\0'; ++i){
			insert(tree0, s[i]);
		}
		for (int i = 0; i < n; ++i){
			memset(tree1, 0, sizeof tree1);
			scanf("%s", s); 
			for (int i = 0; s[i] != '\0'; ++i){
				insert(tree1, s[i]);
			}
			if (memcmp(tree0, tree1, sizeof tree0) == 0){
				printf("YES\n");
			} 
			else
			    printf("NO\n");
		}
	}
	return 0;
}
发布了77 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/xingfushiniziji/article/details/86147080