`
zhengxuezhou
  • 浏览: 148111 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java实现Tree

    博客分类:
  • j2se
 
阅读更多
/******************************************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,"");
}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics