HDU 3179 二叉搜索树(树的建立)
二叉搜索树
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6293 Accepted Submission(s):
2820
的时候输入结束。
接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。
接下去的n行有n个序列,每个序列格式跟第一个序列一样,请判断这两个序列是否能组成同一颗二叉搜索树。
567432
543267
576342
0
NO
similar problems for you: 3787 3790 3789 3788 1710
struct tree //声明树的结构
{
struct tree *left;
int data;
struct tree *right;
};
本题代码
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
typedef struct treenode *tree;//定义treenode这个结构体是一个指针
struct treenode
{
int v;
tree left, right;//这个结构体指针又含有两个指针
bool f;//用于标记该节点曾经有没有经过
};
using namespace std; tree newnode(int x)//新建节点
{
tree t = (tree)malloc(sizeof(treenode));
t->v = x;
t->left = t->right = NULL;
t->f = ;
return t;//要有返回值
} tree insert(tree t,int x)//插入节点
{
if (!t) t = newnode(x);//如果节点为空,建一个节点
else
{
if (x < t->v)
{
t->left = insert(t->left, x);//不能写成t=。。。因为是插入在左边
}
else
t->right = insert(t->right, x);
}
return t;//要有返回值
} bool check(tree t, int x)
{
if (!t) return ;//x在树t中没有出现过
else
{
if (t->v == x)//相等,标记经过该节点
{
t->f = ;
return ;
}
else
{
if (t->f == ) return ;//经过了一个曾经没经过的节点
else
{
if (x < t->v)
return check(t->left, x);
else
return check(t->right, x);
}
}
}
} void init(tree t)//初始化树上的f
{
if (t)
{
t->f = ;
init(t->left);
init(t->right);
}
} int main()
{
int n;
char a[];
while (cin >> n && n)
{
tree t = (tree)malloc(sizeof(treenode));//开辟空间建第一个节点
cin >> a;
int l = strlen(a);
t->v = a[]-'';
t->left = t->right = NULL;
int i;
for (i = ; i < l; i++)
{
int x = a[i] - '';
t = insert(t,x);//插入节点;
}
while (n--)
{
cin >> a;
bool f = ;
for (i = ; i < l; i++)
{
int x = a[i] - '';
f = check(t, x);//进入树t检查
if (!f) break;
}
if (!f) cout << "NO" << endl;
else cout << "YES" << endl;
init(t);//把树上的f重新设为0
}
free(t);//释放树
}
return ;
}
HDU 3179 二叉搜索树(树的建立)的更多相关文章
- hdu 3791:二叉搜索树(数据结构,二叉搜索树 BST)
二叉搜索树 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submiss ...
- HDU 3791 二叉搜索树 (数据结构与算法实验题 10.2 小明) BST
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3791 中文题不说题意. 建立完二叉搜索树后进行前序遍历或者后序遍历判断是否一样就可以了. 跟这次的作业第 ...
- hdu 3791 二叉搜索树(数据结构)
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 3791 二叉搜索树
二叉搜索树 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 3791 二叉搜索树 题解
Problem Description 推断两序列是否为同一二叉搜索树序列 Input 開始一个数n,(1<=n<=20) 表示有n个须要推断,n= 0 的时候输入结束. 接下去一行是 ...
- HDU 3791二叉搜索树解题(解题报告)
1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...
- 【剑指Offer】26、二叉搜索树与双向链表
题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 解题思路: 首先要理解此题目的含义,在双向链表中,每个结 ...
- 原生JS实现二叉搜索树(Binary Search Tree)
1.简述 二叉搜索树树(Binary Search Tree),它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若它的右子树不空,则右子 ...
- LeetCode 669. Trim a Binary Search Tree修剪二叉搜索树 (C++)
题目: Given a binary search tree and the lowest and highest boundaries as L and R, trim the tree so th ...
随机推荐
- 2018-2019 Russia Open High School Programming Contest (Unrated, Online Mirror, ICPC Rules, Teams Preferred)
前言 有一场下午的cf,很滋磁啊,然后又和dalao(见右面链接)组队打了,dalao直接带飞我啊. 这是一篇题解,也是一篇总结,当然,让我把所有的题目都写个题解是不可能的了. 按照开题顺序讲吧. 在 ...
- 使用javascript模拟常见数据结构(三)
六.字典和散列表 我们已经知道,集合表示一组互不相同的元素(不重复元素).在字典中,存储的是键值对,其中键值是用来查询特定的元素的.字典和集合是很相似的,集合采用[值,值]的方式存储,而字典则是以[键 ...
- vue-cli 3 is not a modual err
<srcipt> </srcipt> don't empty normal write <srcipt> export default {}; </scrip ...
- pairs 和 ipairs异同
同:都是能遍历集合(表.数组) 异:ipairs 仅仅遍历值,按照索引升序遍历,索引中断停止遍历.即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出.它只能遍历到集合中出现的第一个不是整数 ...
- [原][译][osgearth]关于Features & Symbology (特征与符号)(OE绘制矢量几何与特殊字符)讲解(OE官方文档翻译)
原文参考:http://docs.osgearth.org/en/latest/user/features.html 自己翻译的,本人英文水平有限,有问题看原链接,原文 20170802重置修改部分翻 ...
- 计算机网络七层协议模型 “开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)
计算机网络七层协议模型 作者:Ryan 时间:2013年10月7日 一.物理层(Physical Layer) OSI模型的最低层或第一层,规定了激活.维持.关闭通信端点之间的机械特性.电气特性 ...
- 在小红家里面,有n组开关,触摸每个开关,可以使得一组灯泡点亮。
package april; import java.util.ArrayList; import java.util.Scanner; /** * * @ClassName: Class_9 * @ ...
- UVA-10384 The Wall Pushers (IDA*)
题目大意:走迷宫,遇到墙时可以推着墙走,但墙后还是墙时便不能推.求出一条任意的最短路径. 题目分析:这道题出的比较人性,输入的时候便是将四周的墙用二进制数表示好了,其实这样减轻了做题人的负担.IDA* ...
- IOS-网络(大文件下载)
一.不合理方式 // // ViewController.m // IOS_0131_大文件下载 // // Created by ma c on 16/1/31. // Copyright © 20 ...
- 微信小程序navigateTo /redirectTo/navigateBack 三者区别
navigateTo 不会将旧页面出栈: redirectTo 会将旧页面出栈,再将需要跳转到的页面入栈: navigateBack 则是将页面栈最后一个元素出栈,因此倒数第二个元素会成为最后一个元素 ...