hdu3791 二叉搜索树(BST的建立)
来源:互联网 发布:url短网址生成 java 编辑:程序博客网 时间:2024/05/21 00:18
http://acm.hdu.edu.cn/showproblem.php?pid=3791
题意:给你一个标准串,此串可以构成一个二叉搜索树,接着是n个比较串,求问这两个串是否可以构成同一个二叉搜索树。
思路:好好理解下二叉搜索树定义,一个串可以描述一个二叉搜索树,但是一个二叉搜索树通常都不止一种表示方法。二叉搜索树通常都是插入的节点和当前根比较大小,从而判断插入的位置,但是插入左方并不影响右方的排列,所以序列总数大概就是左边节点和右边节点的排列组合。
通过对一个字符串中每个字符的插入操作构成一棵树,然后对这个树进行前序遍历得出遍历序列,最后对此序列进行比较即可。
值得注意的有两点,一个是结构体容易用混,看看这个,差不多对结构体指针稍微熟悉下。指针是需要被赋值后才可以使用;
另一个是插入操作,如果为空则创建新节点,不为空则扩充左右子树,注意不对根进行处理。
还是得多熟悉。
#include <stdio.h>#include <algorithm>#include <string.h>#include <math.h>#include <iostream>using namespace std;typedef long long ll;const int N = 12;typedef struct Tree{ Tree *left; Tree *right; int val;}Tree;Tree *root;int stand[N], cmp[N], cnt, len;Tree *creat(int num){ Tree *node = (Tree*)malloc(sizeof(Tree)); node->left = NULL; node->right = NULL; node->val = num; return node;}Tree *insertt(Tree *node, int num){ if(node == NULL) { node = creat(num); } else { if(num < node->val) node->left = insertt(node->left, num); else if (num > node->val) node->right = insertt(node->right, num); } return node;}void preorder(Tree *posttree){ if(posttree != NULL) { cmp[cnt++] = posttree->val; preorder(posttree->left); preorder(posttree->right); }}void build(char *s){ root = NULL; len = strlen(s); cnt = 0; for(int i = 0; i < len; i++) { int num = s[i]-'0'; root = insertt(root, num); }}int main(){ // freopen("in.txt", "r", stdin); int n; char s[N]; while(~scanf("%d", &n)) { if(n == 0) break; scanf("%s", s); build(s); preorder(root); memcpy(stand, cmp, sizeof(cmp)); while(n--) { scanf("%s", s); build(s); preorder(root); bool ans = true; for(int i = 0; i < len; i++) { if(stand[i] != cmp[i]) { ans = false; break; } } if(ans) printf("YES\n"); else printf("NO\n"); } }}
0 0
- hdu3791 二叉搜索树(BST的建立)
- 二叉排序树:HDU3791-二叉搜索树(用指针建立二叉排序树)
- hdu3791二叉搜索树
- HDU3791:二叉搜索树
- hdu3791 二叉搜索树
- hdu3791 二叉搜索树
- HDU3791 二叉搜索树
- HDU3791-二叉搜索树
- 二叉搜索树hdu3791
- hdu3791--二叉搜索树
- hdu3791(二叉搜索树构造)
- HDU3791 二叉搜索树(构建二叉搜索树模板)
- 【二叉搜索数】HDU3791二叉搜索树
- Hdu3791 - 二叉搜索树 - 二叉树
- 搜索二叉树(BST)的实现
- gplt L2-004. 这是二叉搜索树吗?(BST建立的判断)
- *BST(二叉搜索树)
- 二叉搜索树(BST)
- 聚会游戏 Party Games
- rsync+inotify实时同步
- 编译和链接的过程
- 深入了解Android蓝牙Bluetooth——《基础篇》
- C语言指针导学(1)——指针到底是什么
- hdu3791 二叉搜索树(BST的建立)
- nginx配置,重启,日志查看
- Dubbo 详细介绍
- CDN架构以及原理分析
- TCP的连接建立与释放
- 洛谷 P1111 修复公路
- 二.指针的定义及运算
- 佳明面试-洗牌算法
- 解决PowerDesigner提示This data item is already used in a primary identifier