package 二叉树练习;
import java.util.ArrayList;
import java.util.List;
/*根据上面的学习和理解,设计一个Hero二叉树,HeroNode.
可以向这个英雄二叉树插入不同的Hero对象,
并且按照Hero的血量倒排序。
随机生成10个Hero对象,每个Hero对象都有不同的血量值
,插入这个HeroNode后,把排序结果打印出来。*/
public class HeroNode {
HeroNode leftNode;
HeroNode rightNode;
Hero hp;
public void add(Hero hero) {
if (hp == null) {
hp = hero;
} else {
if (hero.hp - hp.hp <= 0) {
if (null == leftNode)
leftNode = new HeroNode();
leftNode.add(hero);
} else {
if (null == rightNode)
rightNode = new HeroNode();
rightNode.add(hero);
}
}
}
public List<Hero> sort(){
List<Hero> values = new ArrayList<>();
if(null != leftNode){
values.addAll(leftNode.sort());
}
values.add(hp);
if(null != rightNode)
values.addAll(rightNode.sort());
return values;
}
}
package 二叉树练习;
/*根据上面的学习和理解,设计一个Hero二叉树,HeroNode.
可以向这个英雄二叉树插入不同的Hero对象,
并且按照Hero的血量倒排序。
随机生成10个Hero对象,每个Hero对象都有不同的血量值
,插入这个HeroNode后,把排序结果打印出来。*/
public class Test01 {
public static void main(String[] args) {
Hero[] hs = new Hero[10];
HeroNode hn = new HeroNode();
for (int i = 0; i < hs.length; i++) {
hs[i] = new Hero("hero"+i,(int)(Math.random() * 100));
hn.add(hs[i]);
}
System.out.println(hn.sort());
}
}
package 二叉树练习;
public class Hero {
String name;
int hp;
public Hero(String name, int hp) {
this.name = name;
this.hp = hp;
}
public Hero (){}
@Override
public String toString() {
return "Hero{" +
"name='" + name + '\'' +
", hp=" + hp +
'}';
}
}