(好好复习是王道)

1115. Counting Nodes in a BST (30)

分析:简单题——将bst树构造出来,然后给每个节点打上高度。最后求出树的高度。然后count树高的节点数加上树高节点数-1就ok了

 #include <iostream>
#include <cstdio> #define MAXN 1003
using namespace std;
typedef struct Node{
int key,hight;
int left,right;
}Node; Node node[MAXN];
int solve_hight[MAXN];
int main()
{
int n,index1,index2,max,a,b;
scanf("%d",&n); scanf("%d",&node[].key);
node[].left=node[].right=-;
for(int i=;i<n;i++){
scanf("%d",&node[i].key);
node[i].left=node[i].right=-;
int j=;
while(){
if(node[i].key>node[j].key)
if(node[j].right!=-)
j=node[j].right;
else
{
node[j].right=i;
break;
}
else
if(node[j].left!=-)
j=node[j].left;
else
{
node[j].left=i;
break;
}
}
}
index1=index2=;
solve_hight[index2++]=;
node[].hight=;
while(index1!=index2){
if(node[index1].left!=-){
solve_hight[index2++]=node[index1].left;
node[node[index1].left].hight=node[index1].hight+;
}
if(node[index1].right!=-){
solve_hight[index2++]=node[index1].right;
node[node[index1].right].hight=node[index1].hight+;
}
index1++;
} a=b=max=;
for(int i=;i<n;i++){
if(node[i].left==-&&node[i].right==-&&node[i].hight>max)max=node[i].hight;
}
for(int i=;i<n;i++){
if(max==node[i].hight)a++;
if(max-==node[i].hight)b++;
}
printf("%d + %d = %d\n",a,b,a+b); return ;
}

1099. Build A Binary Search Tree (30)

类似于上题的简单题,看来pat的题目是一年年变难,难度都被刷上去了。先构建树的框架,然后将所给序列中序遍历,最后层次遍历给出结果。每个人都要找到最适合自己,能最快写出的树的层次遍历的代码。

 #include <iostream>
#include <cstdio>
#include <algorithm>
#define MAXN 105
using namespace std; typedef struct Node{
int left,right;
Node(){
left=right=-;
}
}Node;
Node node[MAXN];
int keynum[MAXN],ans[MAXN],mid[MAXN],count_num;
void mid_travel(int index){
if(node[index].left!=-)
mid_travel(node[index].left); mid[count_num++]=index;
if(node[index].right!=-)
mid_travel(node[index].right); }
int main()
{
int n,index1,index2;
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d",&node[i].left,&node[i].right);
index1=index2=;
ans[index2++]=; while(index1!=index2){
if(node[ans[index1]].left!=-)
ans[index2++]=node[ans[index1]].left;
if(node[ans[index1]].right!=-)
ans[index2++]=node[ans[index1]].right;
index1++;
}
for(int i=;i<n;i++){
scanf("%d",&keynum[i]);
}
//得到中序遍历序列
sort(keynum,keynum+n);
count_num=;
mid_travel();
bool flag=false;
for(int i=;i<n;i++){
for(int j=;j<n;j++)
if(ans[i]==mid[j]){
if(!flag){
printf("%d",keynum[j]);
flag=true;
}else
printf(" %d",keynum[j]);
break;
}
}
return ;
}

pat树之专题(30分)的更多相关文章

  1. PAT 甲级1057 Stack (30 分)(不会,树状数组+二分)*****

    1057 Stack (30 分)   Stack is one of the most fundamental data structures, which is based on the prin ...

  2. [PAT] 1147 Heaps(30 分)

    1147 Heaps(30 分) In computer science, a heap is a specialized tree-based data structure that satisfi ...

  3. PAT 甲级 1147 Heaps (30 分) (层序遍历,如何建树,后序输出,还有更简单的方法~)

    1147 Heaps (30 分)   In computer science, a heap is a specialized tree-based data structure that sati ...

  4. PAT 1004 Counting Leaves (30分)

    1004 Counting Leaves (30分) A family hierarchy is usually presented by a pedigree tree. Your job is t ...

  5. PAT A1147 Heaps (30 分)——完全二叉树,层序遍历,后序遍历

    In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...

  6. PAT 垃圾箱分布(30分)dijstra

    垃圾箱分布 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 大家倒垃圾的时候,都希望垃圾箱距离自己比较近,但是谁都不愿意守着垃圾 ...

  7. PAT甲级:1064 Complete Binary Search Tree (30分)

    PAT甲级:1064 Complete Binary Search Tree (30分) 题干 A Binary Search Tree (BST) is recursively defined as ...

  8. [PAT] 1143 Lowest Common Ancestor(30 分)

    1143 Lowest Common Ancestor(30 分)The lowest common ancestor (LCA) of two nodes U and V in a tree is ...

  9. PAT甲级——1135 Is It A Red-Black Tree (30 分)

    我先在CSDN上面发表了同样的文章,见https://blog.csdn.net/weixin_44385565/article/details/88863693 排版比博客园要好一些.. 1135 ...

随机推荐

  1. java类封装成dll

    @参考文章1,@参考文章2,@参考文章3 1,建立测试类,注意英文注释部分,用汉语直接编译会乱码 public class Hello { //native method is used for ca ...

  2. python中logging模块使用

    1.logging模块使用场景 在写程序的时候,尤其是大型的程序,在程序中加入日志系统是必不可少的,它能记录很多的信息.刚刚接触python的时候肯定都在用print来输出信息,这样是最简单的输出,正 ...

  3. [Java]Spring Ioc讲解,不怕你不懂

    原文地址 引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础上开花结果.但是IoC这个重要的概念却比较晦涩隐讳,不容易让人望文生义 ...

  4. cf相关命令

    进行登录的命令: cf login -a https://api.bupaas.citicsinfo.com --skip-ssl-validation 进行发布的命令: cf push gwdemo ...

  5. Spring mvc项目导出jar包无法识别正常映射问题

    笔者的代码很简单,平常的配置文件,web.xml如下 <servlet> <!--名称 --> <servlet-name>springmvc</servle ...

  6. jquery.form.js 使用以及问题(表单异步提交)

    标注:我引用的js后报错 原因:是引用的js有冲突 我引用了两便jQuery: 转载:https://blog.csdn.net/cplvfx/article/details/80455485 使用方 ...

  7. Oracle性能优化2- 依据场景选择技术

    1.索引的坏处 索引可以加快查询效率,但是使用不当,会造成插入性能很低 drop table test1 purge; drop table test2 purge; drop table test3 ...

  8. ubuntu上mongodb的安装

    Ubuntu上安装MongoDB的完全步骤以及注意事项 本文我们详细介绍了Ubuntu上安装MongoDB的全部过程,希望本次的介绍能够对您有所帮助. AD: 2013大数据全球技术峰会课程PPT下载 ...

  9. vs2015 npm list 更新问题

    在更新npm list时候,经常会非常的慢,今天试了一个诡异的方法,就是在文件夹下面直接把所有缓存全部删除,全部重新下,结果感觉反而速度快很多. 原来的更新包80M竟然1个小时没有下载完. C:\Us ...

  10. db2创建数据库

    1.在实例用户用户下执行 db2 create database <DBName>  on /home/db2inst1/<DBName>  using codeset UTF ...