04-树7. Search in a Binary Search Tree (25)
来源:互联网 发布:参加淘宝培训班有用吗 编辑:程序博客网 时间:2024/05/16 11:47
04-树7. Search in a Binary Search Tree (25)
To search a key in a binary search tree, we start from the root and move all the way down, choosing branches according to the comparison results of the keys. The searching path corresponds to a sequence of keys. For example, following {1, 4, 2, 3} we can find 3 from a binary search tree with 1 as its root. But {2, 4, 1, 3} is not such a path since 1 is in the right subtree of the root 2, which breaks the rule for a binary search tree. Now given a sequence of keys, you are supposed to tell whether or not it indeed correspnds to a searching path in a binary search tree.
Input Specification:
Each input file contains one test case. For each case, the first line gives two positive integers N and M (<=100) which are the total number of sequences, and the size of each sequence, respectively. Then N lines follow, each gives a sequence of keys. It is assumed that the keys are numbered from 1 to M.
Output Specification:
For each sequence, print in a line "YES" if the sequence does correspnd to a searching path in a binary search tree, or "NO" if not.
Sample Input:3 41 4 2 32 4 1 33 2 4 1Sample Output:
YESNONO
#include <stdio.h>//搜索树要求路径中任一元素的右边所有元素都要同时大于它或小于它;//直接遍历每个元素,比较右边元素大小关系,时间复杂度为O(n^2),超时;//O(n)方法:从路径尾部开始,分别维护两个变量:当前尾部元素的最大值和最小值。int judgePath(int *path, int n) {int min = path[n - 1], max = path[n - 1];for (int i = n - 2; i >= 0; --i) {if (path[i] > max)//如果当前元素比最大值还大,说明后面的路径是当前元素的左子树,可行max = path[i];//更新最大值else if (path[i] < min)min = path[i];else//当前元素介于最大值与最小值之间,不可行return 0;}return 1;}int main() {//freopen("test.txt", "r", stdin);int n, m;scanf("%d%d", &n, &m);while (n--) {//n个测试用例int path[100] = {};for (int i = 0; i < m; ++i) {scanf("%d", &path[i]);}if (judgePath(path, m))printf("YES\n");elseprintf("NO\n");}return 0;}
题目链接:http://www.patest.cn/contests/mooc-ds/04-%E6%A0%917
- 04-树7. Search in a Binary Search Tree (25)
- 04-树7. Search in a Binary Search Tree (25)
- 04-树7. Search in a Binary Search Tree (25)
- 04-树4. Search in a Binary Search Tree (25)
- PAT 数据结构 04-树7. Search in a Binary Search Tree (25)
- 04-树4. Search in a Binary Search Tree
- Insert Node in a Binary Search Tree
- Insert Node in a Binary Search Tree
- Search Range in Binary Search Tree
- [刷题]Search Range in Binary Search Tree
- lintcode:Search Range in Binary Search Tree
- Search Range in Binary Search Tree
- 递归-----Search Range in Binary Search Tree
- lintcode: Search Range in Binary Search Tree
- Lintcode_11 Search Range in Binary Search Tree
- #11 Search Range in Binary Search Tree
- Search Range in Binary Search Tree
- Search Range in Binary Search Tree
- 通过异或交换变量的数值
- domino服务器上,如何在服务器设置定时(每周)压缩数据库?
- DDR3的理
- 渐开线函数工具
- 90行python搭一个音乐搜索工具 —— Song Finder
- 04-树7. Search in a Binary Search Tree (25)
- window.showModalDialog以及window.open用法简介
- Linux下关闭开启防火墙
- 欢迎使用CSDN-markdown编辑器
- IOS学习整理(一)视图层次结构与视图控制器
- leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法
- 【HTML学习】新的结构化元素
- linux下为分区设置卷标
- GTK入门学习:控件的添加