97. 二叉排序树

时间限制 1000 ms 内存限制 65536 KB

题目描述

二叉排序树,也称为二叉查找树。可以是一颗空树,也可以是一颗具有如下特性的非空二叉树:

  1. 若左子树非空,则左子树上所有节点关键字值均不大于根节点的关键字值;
  2. 若右子树非空,则右子树上所有节点关键字值均不小于根节点的关键字值;
  3. 左、右子树本身也是一颗二叉排序树。

现在给你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. 二叉排序树的更多相关文章

  1. 北邮oj 104. 912星球的研究生

    104. 912星球的研究生 时间限制 1000 ms 内存限制 65536 KB 题目描述 最近912星球的研究生入学了,912星球的教务处因此忙的焦头烂额,要求yzr做一个信息管理系统登陆查询研究 ...

  2. 北邮oj 题

    题目描述 Every year,prince prepares a birthday gift for princess.The gift is a box,which is decorated wi ...

  3. 北邮OJ

    90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而" ...

  4. 【经验总结】北邮OJ

    90. 字符串转换 时间限制 1000 ms 内存限制 65536 KB 题目描述 我们将仅由若干个同一小写字母构成的字符串称之为简单串,例如"aaaa"是一个简单串,而" ...

  5. 北邮OJ 89. 统计时间间隔 java版

    89. 统计时间间隔 时间限制 1000 ms 内存限制 65536 KB 题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别 ...

  6. 北邮14&18年软院机试【参考】答案

    2014 Problem A. 奇偶求和 题目描述: 给定N个数,分别求出这N个数中奇数的和以及偶数的和. 输入格式 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据 ...

  7. 九度OJ 1201 二叉排序树

    题目地址:http://ac.jobdu.com/problem.php?pid=1201 题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历. 输入: 输入第一行包括一个整数n( ...

  8. 北邮新生排位赛2解题报告d-e

    <> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...

  9. 南邮oj[1401] 乘车费用

    Description lqp家离学校十分十分远,同时他又没有钱乘taxi.于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校.众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lq ...

随机推荐

  1. Oracle中的列转行实现字段拼接用例

    文章目录 Oracle中的列转行实现字段拼接 场景 在SQL使用过程中经常有这种需求:将某列字段拼接成in('XX','XX','XX','XX','XX','XX' ...)做为查询条件. 实现 s ...

  2. [开源福利] Arithmetic Generator

    Arithmetic Generator Built with ❤︎ by Simon Ma ✨ A powerful arithmetic generator

  3. Flutter01-学习准备

    1. 简介: Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. Flutter可以与现有的代码一起工作.在全世界,Flutter正在被越来越多的开发者和 ...

  4. Java技术-3-Java程序基本结构

    下面是一个完整的Java程序, /** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { ...

  5. 使用 custom element 创建自定义元素

    很早我们就可以在 HTML 文档中写 <custome-element></custom-element> 这样的自定义名称标签.但是浏览器对于不认识的标签一律当成一个普通的行 ...

  6. Windows下利用virtualenvwrapper指定python版本创建虚拟环境

    默认已安装virtualenvwrapper 一.添加环境变量(可选) 在系统环境变量中添加 WORKON_HOME ,用来指定新建的虚拟环境的存储位置,如过未添加,默认位置为 %USERPROFIL ...

  7. vijos 1011 清帝之惑之顺治

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  8. form表单提交没有跨域问题,但ajax提交存在跨域问题

    浏览器的策略本质是:一个域名下面的JS,没有经过允许是不能读取另外一个域名的内容,但是浏览器不阻止你向另外一个域名发送请求. 所以form表单提交没有跨域问题,提交form表单到另外一个域名,原来页面 ...

  9. vue安卓4.4.2页面打不开的坑

    项目上线两三天,有保障说安卓下面页面打不开,所以查了下具体原因,系统版本过低,安卓4.4.2,然后发现本地没有babel-polyfill的包,具体解决方案如下: 1,npm 安装 npm insta ...

  10. GPS授时器简介

    GPS授时器简介 GPS是全球定位系统的简称.GPS定位卫星在全球范围内进行定位.导航的系统.GPS所具有的全天候.高精度和自动测量的特点,已经融入到国民经济建设.国防建设和社会发展的各个领域.而在授 ...