技术标签: 数算
二叉搜索树的层次遍历
题目内容:二叉搜索树在动态查表中有特别的用处,一个无序序列可以通过构造一棵二叉搜索树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉搜索树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。
这里,我们想探究二叉树的建立和层次输出。
输入格式:
只有一行,包含若干个数字,中间用空格隔开。(数字可能会有重复,对于重复的数字,只计入一个)
输出格式:
输出一行,对输入数字建立二叉搜索树后进行按层次周游的结果。
输入样例:
51 45 59 86 45 4 15 76 60 20 61 77 62 30 2 37 13 82 19 74 2 79 79 97 33 90 11 7 29 14 50 1 96 59 91 39 34 6 72 7
输出样例:
51 45 59 4 50 86 2 15 76 97 1 13 20 60 77 90 11 14 19 30 61 82 96 7 29 37 62 79 91 6 33 39 74 34 72
#include <iostream>
#include <algorithm>
#include <deque>
using namespace std;
struct treepoint
{
int info;
treepoint* leftchild;
treepoint* rightchild;
treepoint()
{
leftchild = NULL;
rightchild = NULL;
info = 0;
}
};
void insert(int n, treepoint* root)
{
if (n > root->info)
{
if (root->rightchild == NULL)
{
root->rightchild = new treepoint;
root->rightchild->info = n;
return;
}
insert(n, root->rightchild);
}
else
{
if (root->leftchild == NULL)
{
root->leftchild = new treepoint;
root->leftchild->info = n;
return;
}
insert(n, root->leftchild);
}
}
deque<treepoint*> s;
void my_print(treepoint* root)
{
cout << root->info;
if (root->leftchild != NULL)
s.push_back(root->leftchild);
if (root->rightchild != NULL)
s.push_back(root->rightchild);
if (!s.empty())
{
cout << " ";
treepoint* next = s.front();
s.pop_front();
my_print(next);
}
}
int visited[1000] = { 0 };
int main()
{
int n;
cin >> n;
treepoint* root = new treepoint;
root->info = n;
visited[n] = 1;
while (cin >> n)
{
if (visited[n] == 1)
continue;
visited[n] = 1;
insert(n, root);
}
my_print(root);
cout << endl;
return 0;
}
文章浏览阅读1.3k次。继承自flask.view.View,返回基于Response或其自类的对象from flask import Flask,viewsapp = Flask(__name__)class Listview(views.View): def dispatch_request(self): return 'list view'app.add_url_rule('/l..._flask 类视图应用场景
文章浏览阅读1.5k次,点赞2次,收藏7次。在cocos2dx-3.8中的自动内存管理机制是借助引用计数来实现的。对于老版本的cocos引用计数使用的是CCObject,但是这个类在后面就被弃用了,使用Ref来代替,cocos内几乎所有的类都是继承自Ref。 Ref基本的原理就是其内部存在一个引用计数_referenceCount,当这个引用计数为0的时候,就会被释放。引用计数通过retain,release来操作。Ref从创建到销毁的过_cocos内存是怎么管理的
文章浏览阅读68次。0. 目录要开发的是什么项目1.1 想法开端1.2 应该有什么功能?开发需要解决的核心问题具体解决方案3.1 帐号系统3.2 存储服务3.3 使用`LeanEngine`做反防盗链中转接口3.4 Chrome 插件实现对去后端化的看法1. 要开发的是什么项目?一个Chrome插件,用来保存浏览网页时看到...
文章浏览阅读1.2k次。一、背景制品,artifact,也称为工件,是指在构建或持续集成过程中从源码创建而成的二进制包,而这些二进制包通常是通过赋予其的版本号来唯一定位和管理的。制品仓库,artifact repository,则是存储和管理这些版本化的二进制包,并对外提供检索和访问方法的应用程序。制品仓库通常分为中央仓库、企业仓库和本地仓库。中央仓库面向公众开放,存储和管理预先构建好的二进制包,通常提供软件开发..._sonartype nexus jfrog
文章浏览阅读5.8k次,点赞3次,收藏7次。2019独角兽企业重金招聘Python工程师标准>>> ..._摩尔机和米利机
文章浏览阅读2.1w次,点赞35次,收藏181次。#Python高阶# && #数据处理# #数据库# ------主题目录-------1 数据处理篇【含数据库、爬虫相关】:提取搭建系统过程中,出现的各种数据处理场景,讲解对应的解决方法。主题内容如下:【1-1 除权与复权走势的对比】【1-2 解决warning:A value is trying to be set on a copy of a slice from a DataFrame】【1-3 difference方法找出不重复的Dataframe】【1-4 使用pd.m_python股票量化交易从入门到实践
文章浏览阅读5.4k次。1,打开注册表HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) SOFTWARE Microsoft Internet Explorer Main FeatureControl FEATURE_BROWSER_EMULATI
文章浏览阅读1.7k次。http://blog.csdn.net/yangxingbo0311/article/details/7335996 接下来就是start.S了。。本文源码来源于u-boot-1.1.6。 源码的分析参考网上的诸多博客的整理。如http://home.eeworld.com.cn/my/space.php?uid=135723&do=blog&id=25548。http_uboot加载地址
文章浏览阅读1.7k次,点赞3次,收藏5次。用java写了个套用word模版,然后生成PDF正常,结果发现迁移到Linux上发布服务竟然乱码和字符丢失了,经过改代码,改资源文件,还是解决失败,找来找去发现用下面方式竟然好用了,给linux添加字库.引用:环境:centOS7,java8,tomcat8,转换工具aspose.word症状:系统转换出的pdf里汉字不显示,数字、字母正常解决办法:centOS..._windosw world转pdf后字段 正常 linux 转后乱码
文章浏览阅读931次。错误:delete from table1 a WHERE a.table2_id in( select b.id from table2 b where b.name = '-1' )执行以上语句总是报错,原因是mysql在删除的时候,不支持别名定义,把别名去掉即可正常执行。正确:delete from table1 WHERE table2_id in( select _mysql delete没法删除子查询
文章浏览阅读2.6k次。转自https://gitbook.cn/books/5bbb3d2a61d11c2d996be26b/index.html百亿流量 API 网关设计与实践kimmking向作者提问秦金卫,现某公司高级技术总监/Apache Dubbo Committer,前阿里架构师/某商业银行北京研发中心负责人。关注于互联网电商,金融,支付等系统领域,10多年研发管理和架构经验,对于中间件..._美团网关开源
文章浏览阅读580次。集成学习1.导言一个形象的比喻:“三个臭皮匠赛过诸葛亮!”假设输入x\boldsymbol{{x}}x和输出y\boldsymbol{{y}}y之间的真实关系为:y=h(x)\boldsymbol{{y}}=h(\boldsymbol{{x}})y=h(x).对于M\boldsymbol{{M}}M个不同的模型f1(x),⋯ ,fM(x)f_1(\boldsymbol{{x}}),\cdot..._集成模型的期望错误大于等于所有模型的平均期望错误的