当前位置: 首页 > 编程日记 > 正文

L3-010. 是否完全二叉搜索树

L3-010. 是否完全二叉搜索树

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越

将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。

输入格式:

输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。

输出格式:

将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出“YES”,如果该树是完全二叉树;否则输出“NO”。

输入样例1:
9
38 45 42 24 58 30 67 12 51
输出样例1:
38 45 24 58 42 30 12 67 51
YES
输入样例2:
8
38 24 12 45 58 67 42 51
输出样例2:
38 45 24 58 42 12 67 51
NO

#include <iostream>
#include<cstdio>
#include<cstring>
#include<map>
#include<string>
#include<set>
#include<queue>
#include<deque>
#include<algorithm>
#include<cmath>
using namespace std;struct node
{int num,left,right;
}tree[25];
int a[25];
int n;void build()
{int len=1;tree[1].num=a[1];for(int i=2;i<=n;i++){int j=1;while(1){while(a[i]>tree[j].num){if(tree[j].left==-1) break;j=tree[j].left;}if (a[i]>tree[j].num && tree[j].left==-1){tree[++len].num=a[i];tree[j].left=len;break;}while(a[i]<tree[j].num){if(tree[j].right==-1) break;j=tree[j].right;}if (a[i]<tree[j].num && tree[j].right==-1){tree[++len].num=a[i];tree[j].right=len;break;}}}
}
void work()
{queue<int> Q;Q.push(1);int flag=0;int k=0;while(!Q.empty()){int u=Q.front(); Q.pop();printf("%d",tree[u].num);k++;if (k<n) printf(" "); else printf("\n");if (flag>=0){if (tree[u].left>0 && flag>0) flag=-1;else if (tree[u].left<0) flag++;}if (flag>=0){if (tree[u].right>0 && flag>0) flag=-1;else if (tree[u].right<0) flag++;}if (tree[u].left!=-1) Q.push(tree[u].left);if (tree[u].right!=-1) Q.push(tree[u].right);}if (flag==-1) printf("NO\n");else printf("YES\n");
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);tree[i].num=0;tree[i].left=-1;tree[i].right=-1;}build();work();return 0;
}

转载于:https://www.cnblogs.com/stepping/p/6613197.html

相关文章:

[微信小程序]计算自己手机到指定位置的距离

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; 目的: 根据目的地的坐标计算自己手机的位置离目的地的距离的 核心思路: 后续操作必须等所有异步请求都返回了才能继续 使用Promise() const qqmap require("../../utils/qqma…

ai css 线条粗细_如何训练AI将您的设计模型转换为HTML和CSS

ai css 线条粗细by Emil Wallner埃米尔沃尔纳(Emil Wallner) 如何训练AI将您的设计模型转换为HTML和CSS (How you can train an AI to convert your design mockups into HTML and CSS) Within three years, deep learning will change front-end development. It will increa…

Android Layer List 使用实现实例

Layer List是Anroid中的一种图形的方式&#xff0c;它是通过叠加若干张图片的方式来形成最终的图片&#xff0c;最终的图片在代码中表现为一个LayerDrawable对象。 效果图&#xff1a;第一张是默认显示&#xff0c;第二张为按改变按钮后的图 下面通过一个实例来说明&#xff1a…

Promise - js异步控制神器

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; 首先给来一个简单的demo看看Promise是怎么使用的&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><script type"text/ja…

lab_2 Selenium

1、安装SeleniumIDE插件 添加组件-搜索Selenium IDE 安装后重启浏览器可以看到工具中存在此IDE 2、学会使用SeleniumIDE录制脚本和导出脚本 工具--Selenium IDE&#xff0c;得到界面如图 以百度搜索天津大学为例&#xff0c;如下图 红色的是录制按钮&#xff0c;base url是当前…

android进度指示器_等待的痛苦—浏览进度指示器地狱的7个级别

android进度指示器by Mike Zetlow由Mike Zetlow 等待的痛苦—浏览进度指示器地狱的7个级别 (The Pain of Waiting — Navigating the 7 Levels of Progress Indicator Hell) How much hell are you willing to put your users through?您愿意让用户承受多少痛苦&#xff1f; …

Oracle基础 动态SQL语句

一、静态SQL和动态SQL的概念。 1、静态SQL 静态SQL是我们常用的使用SQL语句的方式&#xff0c;就是编写PL/SQL时&#xff0c;SQL语句已经编写好了。因为静态SQL是在编写程序时就确定了&#xff0c;我们只能使用SQL中的DML和事务控制语句&#xff0c;但是DDL语句&#xff0c;以及…

dataTables常用参数

一、新版本和老版本的区别 新版本的改进&#xff1a;https://datatables.net/new/1.10 新老版本参数变化列表&#xff1a;http://datatables.club/upgrade/1.10-convert.html 老版本参数列表&#xff1a; http://legacy.datatables.net/usage/features http://legacy.datatable…

[微信小程序]获取用户当前的城市

有问题可以扫码加我微信&#xff0c;有偿解决问题。承接小程序开发。 微信小程序开发交流qq群 173683895 、 526474645 &#xff1b; 正文&#xff1a; // 获取用户当前位置的名称和城市 util.jsfunction location() {// 实例化腾讯位置服务里面微信小程序JS SDK的API核心…

构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...

构建一个react项目by Samer Buna通过Samer Buna 您想要了解更多有关React的内容吗&#xff1f; 让我们构建一个游戏&#xff0c;然后玩。 (Do you want to learn more about React? Let’s build — and then play — a game.) Update: This article is now part of my book …

vijos 1476 旅游规划题解

题目链接&#xff1a;https://vijos.org/p/1476 解&#xff1a;因为这一定是一棵树&#xff0c;所以我们多画几次图&#xff0c;就会发现所有的最长路径中心点都一样&#xff0c;且中心点把这条最长路径分成两段等长的路。 那么做法就很简单啦&#xff0c;先求出图的最长路径长…

JQ实现导航效果(附效果图)

微信小程序开发交流qq群 581478349 承接微信小程序开发。扫码加微信。 正文&#xff1a; 为了不浪费大家时间, 首先来一张效果图看是不是你需要的 下面是完整的代码和详细的注释. 直接copy就可以用了. html <div id"tab" class"tab"><div…

.NET如何从配置文件中获取连接字符串

一.设置配置文件 <configuration><!--在configuration下创建一个connectionStrings--><connectionStrings><!--以类似键值对的形式&#xff0c;设置好名字和连接字符串--><add name"连接名" connectionString"连接字符串"/>…

javascript 代码_如何使您JavaScript代码保持简单并提高其可读性

javascript 代码by Leonardo Lima莱昂纳多利马(Leonardo Lima) 如何使您JavaScript代码保持简单并提高其可读性 (How to keep your JavaScript code simple and increase its readability) After a few years working almost exclusively with Ruby on Rails and some jQuery,…

《转》Python学习(14)-对文件的操作(一)

转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一、文件对象 我理解的文件对象就是一个接口&#xff0c;通过这个接口对文件进行相关操作。 《Python 核心编程》上说的很晦涩&#xff0c;这里没有深刻理解到&#xff0c;希望有人能解释给我听。 >>> f open(d…

[微信小程序]组件化开发,以一个自定义模块框组件当做示例(附完整示例代码和效果图)

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; 自定义组件我把它分为简单的三个步骤, 1.创建组件 --- 2.编写组件 --- 3.调用,使用组件. 第一步:创建组件 创建一个modal文件夹,里面包含 josn.wxml.wcss.js 四个文件,然后在jo…

openstack安装在虚拟机上重启之后无法启动问题

http://www.byywee.com/page/M0/S931/931767.html 运行rejoin-stack.sh脚本的核心&#xff1a; exec screen -c $TOP_DIR/stack-screenrc stack-screenrc文件存储启动的信息&#xff1a; 例如trove的启动 screen -t tr-api bash stuff "/usr/local/bin/trove-api --config…

让我们讨论一下变量,以及为什么要在JavaScript中使用它们。

by Zell Liew由Zell Liew 让我们讨论一下变量&#xff0c;以及为什么要在JavaScript中使用它们。 (Let’s talk about variables — and why you should use them in JavaScript.) The main purpose of coding is to solve problems. For example, what happens when you clic…

Services(服务)

开启服务有两种方式&#xff1a; 如果不会可以看老师的百度音乐盒的案例1、start方式&#xff1a;start方式的生命周期&#xff1a;*服务只会被开启一次&#xff0c;直到用户手动停止 服务才会被销毁*开启需要调用startService 会执行onCreate(),onStartCommand() *注&…

[敏捷开发实践](2) 用于开发和维持复杂产品的敏捷开发框架Scrum

[敏捷开发实践]&#xff08;2&#xff09; 用于开发和维持复杂产品的敏捷开发框架Scrum 1&#xff0c;Scrum概述 上篇中提到敏捷开发有两种主流的方法&#xff0c;一个是XP&#xff0c;另一个是Scrum&#xff0c;本篇简要介绍Scrum方法。Scrum是一套开发和维护复杂产品的框架或…

js 实现多选框(复选框) 和单选框,下拉框功能完整示例代码附效果图

<!DOCTYPE html> <html><head><meta charset"utf-8" /><script src"http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script><title>单选框,复选框,下拉菜单简单示例</title></head…

ruby on rails_我成为了Ruby on Rails和React的贡献者,你也可以

ruby on railsI am really grateful to have contributed to a few open source projects, including two I currently use on a regular basis: Ruby on Rails and React.我非常感谢为一些开源项目做出了贡献&#xff0c;其中包括我目前定期使用的两个项目&#xff1a; Ruby o…

MySQL加密算法

1.不可逆加密&#xff1a; PASSWORD()&#xff0c;ENCRYPT(&#xff0c;)&#xff0c;MD5()&#xff0c;SHA5()。 2.可逆的加密算法&#xff1a; ENCODE(,) DECODE(,)&#xff1a;加密解密字符串。该函数有两个参数&#xff1a;被加密或解密的字符串和作为加密或解密基础的密…

js回调函数和函数带参数的使用示例

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 //demo1 <html><head><meta charset"UTF-8"><script src"http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script></head>&…

mvc-3模型和数据(1)

MVC和命名空间 var User function(atts) {this.attribute atts || {}; } //和具体user相关的方法 User.prototype.destroy function() {}; //和具体user不相关的函数和变量 User.fetchRemove function() {}; var user new User({name:jinks}); user.destroy();构建对象关系…

初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da)

by Donavon West由Donavon West 初步了解&#xff1a;使用JavaScript进行表达式(De Do Do Do&#xff0c;De Da Da Da) (A first look: do expressions in JavaScript (De Do Do Do, De Da Da Da)) This article is not about about the The Police’s 1980 hit song from alb…

div 下 的img水平居中

设置text-align:center; 这个div必须要设置宽度&#xff1b; 如&#xff1a;{text-align:center; width:100%;}转载于:https://www.cnblogs.com/zzd0916/p/6626772.html

Understanding SOAP

Understanding SOAP转载于:https://www.cnblogs.com/daishuguang/p/4227983.html

js删除组数中的某一个元素(完整代码附效果图)

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 正文&#xff1a; <view class"big-logos"> <imagebindtap"addimg"src../../../image/s.png></image> <blockwx:for"{{img_arr}}"wx:key"in…

c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码

c专家编程/c陷阱by Dmitri Grabov德米特里格拉波夫(Dmitri Grabov) 如何避免常见的初学者陷阱并像专家一样开始编码 (How to avoid common beginner pitfalls and start coding like a pro) Learning to code is tough. We’ve all encountered cryptic errors and code break…