团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗?GU
来源:互联网 发布:英特尔芯片组设备软件 编辑:程序博客网 时间:2024/05/01 01:42
团体程序设计天梯赛-练习集
L2-004. 这是二叉搜索树吗?
https://www.patest.cn/contests/gplt/L2-004
根据二叉搜索树的定义进行递归,先找到左枝与右枝的分界,再递归搜索左枝与右枝。在递归的同时就可以记录后序排序结果。
注意:
- 如果没有右枝要单独判断。
- 递归最后要返回true。
- 后面注释掉是的是两个递归的方法。
#include<iostream>#include<cstdio>using namespace std;int A[1005], cnt, B[1005];bool thistree(int s, int d,int tab) { if (s > d - 1) { return true; } if (s == d - 1) { B[cnt++] = A[s]; return true; } int i; bool flag = true; for (i = s + 1; i < d; i++) { if (tab ? A[s] <= A[i] : A[s] > A[i]) { flag = false; if (!thistree(s + 1, i, tab)) { return false; } break; } } if (flag) { if (!thistree(s + 1, d, tab)) { return false; } } else { for (int j = i; j < d; j++) { if (tab ? A[s] > A[j]:A[s] <= A[j]) { return false; } } if (!thistree(i, d, tab)) { return false; } } B[cnt++] = A[s]; return true;}int main() { int N; while (scanf("%d", &N) != EOF) { if (N == 0) { printf("YES\n"); continue; } for (int i = 0; i < N; i++) { scanf("%d", &A[i]); } if (thistree(0, N, 1)) { cnt = 0; printf("YES\n"); for (int i = 0; i < N - 1; i++) { printf("%d ", B[i]); } /*pr(0, N - 1, 1);*/ printf("%d\n", B[N - 1]); } else if (thistree(0, N, 0)) { cnt = 0; printf("YES\n"); for (int i = 0; i < N-1; i++) { printf("%d ", B[i]); } /*pr(0, N - 1, 0);*/ printf("%d\n", B[N - 1]); } else { printf("NO\n"); } } return 0;}//void pr(int l, int r, int tab) {// if (l > r) return; //debug 越界判断// if (l == r) {// printf(++cnt == 1 ? "%d" : " %d", A[l]);// return;// }// int root = A[l], i;// bool fl, fr;// for (i = l + 1; i <= r + 1; i++) {// fl = fr = true;// for (int j = i; j <= r; j++) {// if (tab ? A[j] < root : A[j] >= root) {// fr = false;// break;// }// }// for (int j = i - 1; j > l; j--) {// if (tab ? A[j] >= root : A[j] < root) {// fl = false;// break;// }// }// if (fr && fl) {// break;// }// }// pr(l + 1, i - 1, tab);// pr(i, r, tab);// printf(++cnt == 1 ? "%d" : " %d", root);//}
0 0
- 团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗?GU
- 团体程序设计天梯赛-练习集L2-004. 这是二叉搜索树吗
- 团体程序设计天梯赛-练习集-L2-004. 这是二叉搜索树吗?
- 团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗? 解题报告
- 团体程序设计天梯赛-练习集 L2-4. 这是二叉搜索树吗? 区间递归
- L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT
- 团体程序设计天梯赛L2-004 这是二叉搜索树吗?(数据结构)
- 团体程序设计天梯赛L2-004 这是二叉搜索树吗?
- 团体程序设计天梯赛-练习集 L2-011. 玩转二叉树
- 团体程序设计天梯赛-练习集L2-011. 玩转二叉树
- 团体程序设计天梯赛-练习集 L2-011. 玩转二叉树 解题报告
- 团体程序设计天梯赛-练习集L2-011 玩转二叉树(构造二叉树+BFS)
- 团体程序设计天梯赛-练习集 -- L3-010. 是否完全二叉搜索树
- PAT-团体程序设计天梯赛-练习集- L3-010 是否完全二叉搜索树【三星级】
- 团体程序设计天梯赛-练习集 L3-010. 是否完全二叉搜索树
- 团体程序设计天梯赛-练习集 -- L3-016. 二叉搜索树的结构(模拟)
- 团体程序设计天梯赛-练习集 L2-3. 月饼 贪心
- 团体程序设计天梯赛-练习集 L2-002
- java之方法重写
- Lua的loadstring( )的用法
- UIView的userInteractionEnabled属性的意义
- iOS事件响应
- Android Application 项目创建经验、错误及解决
- 团体程序设计天梯赛-练习集 L2-004. 这是二叉搜索树吗?GU
- java之子类中的构造方法
- 两个栈实现一个队列
- Oracle中PL/SQL概述
- 嵌入式和Linux简介
- 读书笔记-java网络编程-5URL和URI-代理
- javaScript--03 JavaScript基础
- AppiumLibrary扩展
- ViewStub控件简单使用