您的位置:首页 > 编程语言 > Java开发

java实现树的添加和取父节点,子节点;聚合树,实现选项菜单功能

2014-03-22 20:32 573 查看
package com.kane.test;

import java.util.ArrayList;

import java.util.List;

public class Tree {
private List<Node> list=new ArrayList<Node>();
/**
* 内部类
* @author buaa-pc
*
*/
class Node{
String data;
String parent;
}
public void add(String parent,String child) {
Node n=new Node();
n.data=child;
n.parent=parent;
list.add(n);
}
/**
* 获取父节点
* @param x
* @return
*/
public String getParent(String x) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).data.equals(x)) {//比较内容
return list.get(i).parent;
}
}
return null;
}
public List<String> getChild(String x) {
List<String> newList=new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).parent.equals(x)) {
newList.add(list.get(i).data);
}

}
return newList;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Tree a=new Tree();
a.add("世界","欧洲");
a.add("世界","亚洲");
a.add("世界","美洲");
a.add("亚洲","中国");
a.add("亚洲","日本");
a.add("亚洲","韩国");
a.add("中国","北京");
a.add("中国","江苏");
a.add("中国","上海");
a.add("中国","安徽");
System.out.println(a.getParent("安徽"));
System.out.println("-------------");
System.out.println(a.getChild("中国"));
}

}

package com.kane.test;

import java.util.List;

import java.util.Scanner;

public class MyMenu {
Tree tree=new Tree();
public void add(String parent,String child) {
tree.add(parent, child);//用了聚合的方式,没用继承实现add
}
public String go(String x) {
Scanner scanner=new Scanner(System.in);
for(;;){
List<String> lst=tree.getChild(x);//组合方式实现lst
if (lst.isEmpty()) {
return x;
}
System.out.println("-----------");

for (int i = 0; i < lst.size(); i++) {
System.out.println(i+"."+lst.get(i));
}
System.out.println("u.请返回上一级");
System.out.println("-----------");
System.out.println("请输入选择:");
String string=scanner.nextLine();
if (string.equals("u")) {
String x1=tree.getParent(x);
if (x1!=null) {
x=x1;
continue;
}
}
try {//防止输入异常
String x1=lst.get(Integer.parseInt(string));
x=x1;
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("请重新选择:");
}
}

}
/**
* @param args
*/
public static void main(String[] args) {
//创建菜单对象
MyMenu mm=new MyMenu();
mm.add("水果","苹果");
mm.add("水果","香蕉");
mm.add("水果","梨子");
mm.add("苹果","红富士苹果");
mm.add("苹果","国光苹果");
mm.add("国光苹果","富强1号");
mm.add("国光苹果","富强2号");
String t=mm.go("水果");
System.out.println("您选择:"+t);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐