一组成绩,一组学生,按照成绩的大小,由高到底排序出姓名和成绩(二叉树)实现
来源:互联网 发布:.market域名 编辑:程序博客网 时间:2024/04/27 13:27
package com.cwh.batTest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:21:29
* @describe(描述) 一组成绩,一组学生,按照成绩的大小,由高到底排序出姓名和成绩
* 二叉树
*/
public class StudentAndScore2 {
public static void main(String[] args) {
BinaryTree bTree = new BinaryTree();
int[] score = new int[]{88,99,87,93,98,98};
String[] name = new String[]{"小红","小名","小白","小篮","小青","小黄"};
for(int i =0;i<score.length;i++){
bTree.addStudentIntree(name[i], score[i]);
}
bTree.printStudent();
}
}
/**
* 建立学生二叉树
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:34:58
* @describe(描述)
*/
class BinaryTree{
private TStudent root;
public void addStudentIntree(String name,int score){
TStudent newStudent =new TStudent(name, score);
if(this.root==null){
this.root = newStudent;
}else{
this.root.addStudent(newStudent);
}
}
public static List list = new ArrayList();
public void printStudent(){
this.root.printInOrder(list);
for (int i = list.size(); i >0; i--) {
System.out.println("["+"姓名为:"+((TStudent)list.get(i-1)).getName()+"&成绩为:"+((TStudent)list.get(i-1)).getScore()+"]");
}
}
}
/**
* 学生节点
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:35:07
* @describe(描述)
*/
class TStudent{
private String name;
private int score;
TStudent leftStudent;
TStudent rightStudent;
public TStudent(String name,int score) {
this.name=name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public TStudent getLeftStudent() {
return leftStudent;
}
public void setLeftStudent(TStudent leftStudent) {
this.leftStudent = leftStudent;
}
public TStudent getRightStudent() {
return rightStudent;
}
public void setRightStudent(TStudent rightStudent) {
this.rightStudent = rightStudent;
}
/**
* 用于建立二叉搜索树最坏的情况是O(n),为单链表形式,最好的情况是满二叉树
* @param student
*/
public void addStudent(TStudent student){
if (student.score<this.score) {
if(this.leftStudent == null){
this.leftStudent = student;
}else{
this.leftStudent.addStudent(student);
}
}else{
if(this.rightStudent ==null){
this.rightStudent = student;
}else{
this.rightStudent.addStudent(student);
}
}
}
/**
* 打印后序遍历二叉树
*/
public void printInOrder(List list){
if(this.leftStudent !=null){
this.leftStudent.printInOrder(list);
}
list.add(this);
// System.out.println("["+"姓名为:"+this.name+"&成绩为:"+this.score+"]");
if(this.rightStudent !=null){
this.rightStudent.printInOrder(list);
}
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:21:29
* @describe(描述) 一组成绩,一组学生,按照成绩的大小,由高到底排序出姓名和成绩
* 二叉树
*/
public class StudentAndScore2 {
public static void main(String[] args) {
BinaryTree bTree = new BinaryTree();
int[] score = new int[]{88,99,87,93,98,98};
String[] name = new String[]{"小红","小名","小白","小篮","小青","小黄"};
for(int i =0;i<score.length;i++){
bTree.addStudentIntree(name[i], score[i]);
}
bTree.printStudent();
}
}
/**
* 建立学生二叉树
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:34:58
* @describe(描述)
*/
class BinaryTree{
private TStudent root;
public void addStudentIntree(String name,int score){
TStudent newStudent =new TStudent(name, score);
if(this.root==null){
this.root = newStudent;
}else{
this.root.addStudent(newStudent);
}
}
public static List list = new ArrayList();
public void printStudent(){
this.root.printInOrder(list);
for (int i = list.size(); i >0; i--) {
System.out.println("["+"姓名为:"+((TStudent)list.get(i-1)).getName()+"&成绩为:"+((TStudent)list.get(i-1)).getScore()+"]");
}
}
}
/**
* 学生节点
* @author(创建者) cwh
* @datetime(创建时间) 2015-8-13 - 下午04:35:07
* @describe(描述)
*/
class TStudent{
private String name;
private int score;
TStudent leftStudent;
TStudent rightStudent;
public TStudent(String name,int score) {
this.name=name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public TStudent getLeftStudent() {
return leftStudent;
}
public void setLeftStudent(TStudent leftStudent) {
this.leftStudent = leftStudent;
}
public TStudent getRightStudent() {
return rightStudent;
}
public void setRightStudent(TStudent rightStudent) {
this.rightStudent = rightStudent;
}
/**
* 用于建立二叉搜索树最坏的情况是O(n),为单链表形式,最好的情况是满二叉树
* @param student
*/
public void addStudent(TStudent student){
if (student.score<this.score) {
if(this.leftStudent == null){
this.leftStudent = student;
}else{
this.leftStudent.addStudent(student);
}
}else{
if(this.rightStudent ==null){
this.rightStudent = student;
}else{
this.rightStudent.addStudent(student);
}
}
}
/**
* 打印后序遍历二叉树
*/
public void printInOrder(List list){
if(this.leftStudent !=null){
this.leftStudent.printInOrder(list);
}
list.add(this);
// System.out.println("["+"姓名为:"+this.name+"&成绩为:"+this.score+"]");
if(this.rightStudent !=null){
this.rightStudent.printInOrder(list);
}
}
}
0 0
- 一组成绩,一组学生,按照成绩的大小,由高到底排序出姓名和成绩(二叉树)实现
- 数组排序之对一组学生按照成绩, 学号,年龄, 姓名排序~
- 一组学生成绩处理
- 集合存储学生类(有姓名和成绩两个属性), 按照姓名由前到后、成绩由低到高的顺序输出
- 输入学生个数,学生姓名和他们的成绩,然后按照学生成绩降序排列
- 输入两个学生的学号,成绩,输出成绩较高的学生的学号姓名和成绩
- 使用TreeSet集合存储学生姓名成绩,并按照总成绩从高到低排序。
- 2.6使用二维数组存储学生的数据,包括学号、姓名、操作系统成绩、Java成绩、高数成绩、总分;一行存储一个学生的数据;要求输入若干学生的数据,求出总分;然后按照总分由高到低重新排列;输出排序后的结果
- 扩展练习4(学生类设计).设计一个友元函数,按照成绩从高到低的顺序输出姓名、学号和成绩信息
- 输入5个学生的姓名和成绩,顺序输出这五个学生的姓名和成绩,并输出最高成绩的姓名和成绩
- 输入n(n<46)个学生的姓名和成绩,顺序输出这n个学生的姓名和成绩,并输出最高成绩的姓名和成绩。
- 十六周任务二 学生成绩排序文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩,将成绩排序后保存到ordered_score.dat文件中
- 输入学生的姓名学号成绩,并按平均分由低到高排序
- 有一个班4个学生5门课成绩,要求编程实现把这四个学生的成绩按照第一门课由小到大排序(冒泡法)。
- 带姓名的成绩排序
- 姓名,年龄,成绩的排序
- 采用封装的思想对学生姓名成绩年龄排序
- 从文件读出学生信息数据,按成绩从高到底排序,并输出其中成绩次高者的所有数据。
- 用一个textview显示数字,让数字从一个值渐变到另外一个值
- PowerBuilder 使用JDBC连接MYSQL
- Git Push 避免用户名和密码方法
- SpringMVC jdbc返回的不是标准对象时处理方法
- leetcode Path Sum 路径和
- 一组成绩,一组学生,按照成绩的大小,由高到底排序出姓名和成绩(二叉树)实现
- github的一些常用方法
- 拓扑排序之NOIP2003神经网络
- 文章标题
- 单链表——封装了一个类(1)
- HttpUtil
- EF中数据库切换为本地2~也许你只是少了个_log.ldf
- HDU 1013 Digital Roots (简单题_大数)
- Masonry介绍与使用实践(快速上手Autolayout)