Chiken find good fater


/**
*
*/
package com.mzl.tms;

import java.util.ArrayList;
import java.util.List;

/**
* @author mzl
*
*/
public class ChikenLookingFatherTest {

public static void main(String[] args) {

Chiken kichen_1 = ChikenMother.born("kichen_1");
Chiken kichen_2 = ChikenMother.born("kichen_2");
Chiken kichen_3 = ChikenMother.born("kichen_3");// chiken_3 is bad body
kichen_3.setBadMan(true);
Chiken kichen_4 = ChikenMother.born("kichen_4");
//kichen_4.setBadMan(true);
Chiken kichen_5 = ChikenMother.born("kichen_5");

kichen_4.setFather(kichen_2);
kichen_2.setFather(kichen_1);
kichen_1.setFather(kichen_3);
kichen_3.setFather(kichen_5);

// Chiken kichen = sort(kichen_4);

Chiken k = findGoodFather(kichen_4);
setGoodFather(k);

while (k != null) {
System.out.println(k.getName());
k = k.getFather();
}


}

public static Chiken sort(Chiken kichen){
List<Chiken> list = new ArrayList<Chiken>(5);
Chiken tmp = kichen;

while(tmp != null){
if(tmp.isBadMan()){
tmp = tmp.getFather() ;
}else{
Chiken c = tmp.getFather();

tmp.setFather(null);
list.add(tmp);
tmp = c;
}
}

int number = list.size();
if(number == 0){
return null;
}else if(number ==1){
return list.get(0);
}else if(number == 2){
list.get(0).setFather(list.get(1));
return list.get(0);
}else{
for(int i = 0 ; i< list.size() - 1 ; i++){
list.get(i).setFather(list.get(i+1));
}
return list.get(0);
}
}

/**
*
* @param chiKen
*/
public static void setGoodFather(Chiken chiKen){
Chiken father = chiKen.getFather();
if(father==null){
return ;
}

if(father.isBadMan()){
Chiken tmpFather = findGoodFather(chiKen);
chiKen.setFather(tmpFather);
if(tmpFather!=null)
setGoodFather(tmpFather);
}else{
setGoodFather(father);
}

}

/**
*
* @param chiKen
* @return
*/
public static Chiken findGoodFather(Chiken chiKen){
if(chiKen.getFather()!=null){
if(!chiKen.getFather().isBadMan()){
return chiKen.getFather();
}else{
return findGoodFather(chiKen.getFather());
}
}
return null;
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值