北邮oj 97. 二叉排序树
97. 二叉排序树
时间限制 1000 ms 内存限制 65536 KB
题目描述
二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:
- 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
- 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
- 左、右子树本身也是一颗二叉排序树。
现在给你N个关键字值各不相同的节点,要求你按顺序插入一个初始为空树的二叉排序树中,每次插入后成功后,求相应的父亲节点的关键字值,如果没有父亲节点,则输出-1。
输入格式
第一行,一个数字N(N<=100),表示待插入的节点数。
第二行,N个互不相同的正整数,表示要顺序插入节点的关键字值,这些值不超过108。
输出格式
输出共N行,每次插入节点后,该节点对应的父亲节点的关键字值
输入样例
5
2 5 1 3 4
输出样例
-1
2
2
5
3
不是很难的题但确实体现了北邮爱考树相关的编程题,从历年的初试题也能看得出来。
用类表示节点,在节点内部定义父节点。
用节点数组按输入顺序存储节点。
在递归创建二叉排序树的时候,记录父节点。
package test;
import java.io.BufferedInputStream;
import java.util.Scanner;
class NODE1{
int value;
NODE1 father;
NODE1 left;
NODE1 right;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public NODE1 getFather() {
return father;
}
public void setFather(NODE1 father) {
this.father = father;
}
public NODE1 getLeft() {
return left;
}
public void setLeft(NODE1 left) {
this.left = left;
}
public NODE1 getRight() {
return right;
}
public void setRight(NODE1 right) {
this.right = right;
}
public NODE1(int value, NODE1 father, NODE1 left, NODE1 right) {
super();
this.value = value;
this.father = father;
this.left = left;
this.right = right;
}
}
public class ErchashuMain {
public static void main(String[] args) {
Scanner scan = new Scanner (new BufferedInputStream(System.in));
int T = scan.nextInt();
NODE1 root = new NODE1(scan.nextInt(),null, null, null);
NODE1 [] nodes = new NODE1[T];
nodes[0] = root;
root.father = new NODE1(-1,null, null, null);
for(int i=1;i<T;i++){
nodes[i] = new NODE1(scan.nextInt(),null, null, null);
Insert(nodes[i],root);
}
for(int i=0;i<T;i++){
System.out.println(nodes[i].father.value);
}
}
private static int Insert(NODE1 tarnode, NODE1 root) {
if(tarnode.value<root.value){
if(root.left!=null){
Insert(tarnode,root.left);
}else{
tarnode.father = root;
root.left = tarnode;
return 1;
}
}
if(tarnode.value>root.value){
if(root.right!=null){
Insert(tarnode,root.right);
}else{
tarnode.father = root;
root.right = tarnode;
return 1;
}
}
return 1;
}
}
北邮oj 97. 二叉排序树的更多相关文章
- 北邮oj 104. 912星球的研究生
104. 912星球的研究生 时间限制 1000 ms 内存限制 65536 KB 题目描述 最近912星球的研究生入学了,912星球的教务处因此忙的焦头烂额,要求yzr做一个信息管理系统登陆查询研究 ...
- 北邮oj 题
题目描述 Every year,prince prepares a birthday gift for princess.The gift is a box,which is decorated wi ...
- 北邮OJ
90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而" ...
- 【经验总结】北邮OJ
90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而" ...
- 北邮OJ 89. 统计时间间隔 java版
89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...
- 北邮14&18年软院机试【参考】答案
2014 Problem A. 奇偶求和 题目描述: 给定N个数,分别求出这N个数中奇数的和以及偶数的和. 输入格式 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据 ...
- 九度OJ 1201 二叉排序树
题目地址:http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n( ...
- 北邮新生排位赛2解题报告d-e
<> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...
- 南邮oj[1401] 乘车费用
Description lqp家离学校十分十分远,同时他又没有钱乘taxi.于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校.众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lq ...
随机推荐
- 对话|首席研究员童欣:从长远看,AR的应用范围远比VR广泛
童欣博士现任微软亚洲研究院网络图形组首席研究员.1993年毕业于浙江大学计算机系,获工学学士学位:1996年获浙江大学计算机系硕士学位:1999年获清华大学计算机系博士学位,同年加入微软亚洲研究院. ...
- Job for network.service failed because the control process exited with error code问题
Job for network.service failed because the control process exited with error code问题 因为是克隆的,所以需要重新修改静 ...
- 【i3】manjaro配置
介绍 这是一期关于manjaro的安装到开发环境配置i3wm的教程.我即将在manjaro_gnome里面演示 主要的软件或者工具 i3wm tmux nvim polybar compton ran ...
- py面向对象编程基础
'''类:一类事物的抽象,用于定义抽象类型 实例:类的单个实际描述 如:人是一个类,而单个人是一个实例 用class来创建一个类,调用一个类来创建一个实例'''class Person: passxi ...
- py基础之无序列表
'''dic是一个可以将两个相关变量关联起来的集合,格式是dd={key1:value1,key2:value2,key3:value3}'''d = { 'adam':95, 'lisa':85, ...
- ionic监听android返回键(实现“再按一次退出”功能)
在android平台上的app,在主页面时经常会遇到"再按一次退出app"的功能,避免只按一下返回键就退出app提升体验优化. 1.这个功能需要我们用到ionic提供的regist ...
- Vmware安装的linux系统开机黑屏,关闭显示虚拟机忙怎么怎么解决?
在vm虚拟机中,可能会遇到打开一台主机直接黑屏,而且无法关闭,关闭会显示虚拟机繁忙这种情况,如下图: 一般是因为没有正常关机或者操作不当导致的 对此,解决办法一般有两种 第一种方法: 1.重启电脑 ...
- 图像IO
图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复.和绘图性能相关紧密相关的是图像性能.在这一章中,我们将研究 ...
- Core + Vue 后台管理基础框架3——后端授权
1.前言 但凡业务系统,授权是绕不开的一环.见过太多只在前端做菜单及按钮显隐控制,但后端裸奔的,觉着前端看不到,系统就安全,掩耳盗铃也好,自欺欺人也罢,这里不做评论.在.NET CORE中,也见过不少 ...
- java第二节课课后
动手动脑问题 : 程序源代码: //MethodOverload.java //Using overloaded methods public class MethodOverload { publi ...