笛卡尔树
来源:互联网 发布:软件的技术特点 编辑:程序博客网 时间:2024/04/29 07:23
双关键字,关于K1的二叉搜索树,关于K2的最小堆。
判断中序遍历是否为递增,即可判断是否为二叉搜索树。
最小堆 看路径是否递增即可。
#include<stdio.h>#include<string.h>#include<stdlib.h>struct node{ int l,r,k1,k2;}a[1005];int num[1005],cnt=0,flag;int vis[1005]={0};void dfs(int x,int cmp){ if(flag)return; if(x==-1)return; if(a[x].k2<=cmp) {flag=1;return;} dfs(a[x].l,a[x].k2); dfs(a[x].r,a[x].k2);}void zdfs(int x){ if(x==-1) return; zdfs(a[x].l); num[cnt++]=a[x].k1; zdfs(a[x].r);}int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d%d%d%d",&a[i].k1,&a[i].k2,&a[i].l,&a[i].r); if(a[i].l!=-1)vis[a[i].l]++; if(a[i].r!=-1)vis[a[i].r]++; } int pos; for(pos=0;pos<n;pos++) if(!vis[pos]) break; flag=0; zdfs(pos); for(int i=1;i<n;i++) if(num[i]<=num[i-1]) { flag=1;break; } if(flag){puts("NO");return 0;} dfs(pos,-0x3f3f3f3f); flag?puts("NO"):puts("YES");}
0 0
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- 笛卡尔树
- poj 2201 笛卡尔树
- sgu155 笛卡尔树
- 笛卡尔树
- poj2796Feel Good(笛卡尔树)
- PAT4-09. 笛卡尔树
- poj2051Fence Repair笛卡尔树
- 笛卡尔树cartesian tree
- 笛卡尔树构建
- pat-笛卡尔树
- poj 2201 笛卡尔树
- ElasticSearch 常用的查询过滤语句
- eclipse设置YaHei Consolas Hybrid字体
- 13、图灵机器人能力
- Tomcat 系统架构与设计模式---工作原理
- android获取app当前的渠道号或者获取清单文件application中的任意meta-data(以友盟的多渠道打包为例)
- 笛卡尔树
- C++ 部分快捷键整理
- DirectoryEntry IIS操作
- LPC11E68串口USART1学习笔记
- Android 如何创建子线程以及区分主线程
- mysql 省区sql表
- QGroundControl Developers Guide——Controls
- 第十二周项目1-图基本算法库
- java数组