java实现Tree

/******************************************begin node class**************************************/
package com.tree.node;
import java.util.ArrayList;
import java.util.List;
public class Node
{
//子id
private int id;
//父id
private int pid;
//描述
private String desc;
//子节点
public List<Node> children = new ArrayList<Node>(0);

public Node(int id,int pid,String desc)
{
this.id = id;

this.pid= pid;

this.desc = desc;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public int getPid() {
return pid;
}

public void setPid(int pid) {
this.pid = pid;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}
}
/******************************************end node class**************************************/


/*****************************************begin Tree class *************************************/
package com.tree.node;
public class Tree
{
//根节点
public Node root = new Node(0,-1,"根节点");

public void addNode(Node node)
{
eqNode(root,node);
}
private void eqNode(Node fN,Node node)
{
if(fN.getId()==node.getPid())
{
fN.children.add(node);
}
else
{
for(Node n :fN.children)
{
eqNode(n,node);
}
}
}

public void display(Node node,String s)
{
System.out.println(s+node.getDesc());
s+="|------";
if(node.children.size()>0)
{
for(Node n: node.children)
{
display(n,s);
}
}
}
}

/*******************************************end Tree class********************************/


/********************************************test clas ***********************************/
package com.tree.node;
public class Test {
/**
* @param args
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
/**
* 当前的参数fid必须在当前树中存在
*/
Tree tree = new Tree();
Node n1 = new Node(1,0,"节点1");
Node n2 = new Node(2,1,"节点2");
Node n3 = new Node(3,2,"节点3");
Node n4 = new Node(4,0,"节点4");
Node n5 = new Node(5,3,"节点5");
Node n6 = new Node(6,0,"节点6");
Node n7 = new Node(7,6,"节点7");
//Node n8 = new Node(8,6,"节点8");
Node n9 = new Node(9,1,"节点9");
Node n10 = new Node(10,4,"节点10");
Node n8 = new Node(8,10,"节点8");
Node n11 = new Node(11,8,"节点11");
Node n12 = new Node(12,5,"节点12");
Node n13 = new Node(13,5,"节点13");
tree.addNode(n1);
tree.addNode(n2);
tree.addNode(n3);
tree.addNode(n4);
tree.addNode(n5);
tree.addNode(n6);
tree.addNode(n7);
//tree.addNode(n8);
tree.addNode(n9);
tree.addNode(n10);
tree.addNode(n8);
tree.addNode(n11);
tree.addNode(n12);
tree.addNode(n13);
tree.display(tree.root,"");
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值