package com.link;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Tree {
private TreeNode root = new TreeNode();
private List<TreeNode> nodes = new ArrayList<TreeNode>();
public TreeNode getRootNode(){
return root;
}
public void addNodes(TreeNode treeNode){
nodes.add(treeNode);
}
/**
* 移除节点对象
* @param treeNode 要移除的节点对象
*/
public void remove(TreeNode treeNode){
Iterator<TreeNode> iterator = nodes.iterator();
TreeNode next = null;
while(iterator.hasNext()){
next = iterator.next();
if(next == treeNode){
nodes.remove(next);
break;
}
}
}
/**
* 根据节点索引移除节点对象
* @param index 要移除节点对象的索引 以0开始
*/
public void remove(int index){
nodes.remove(index);
}
/**
* 根据节点索引获取节点对象
* @param index 要获取节点对象的索引
* @return
*/
public TreeNode getNode(int index){
return nodes.get(index);
}
/**
* 根据元素的子节点的个数
* @return
*/
public int size(){
return nodes.size();
}
}
package com.link;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TreeNode {
private TreeNode parentNode;
private List<TreeNode> childNodes = new ArrayList<TreeNode>();
private String value;
private String text;
public TreeNode() {
super();
// TODO Auto-generated constructor stub
}
/**
* 构造方法
* @param value 值
* @param text 文本
*/
public TreeNode(String value, String text) {
super();
this.value = value;
this.text = text;
}
/**
* 获取父节点
* @return 返回节点对象
*/
public TreeNode getParentNode() {
return parentNode;
}
/**
* 设置父节点对象
* @param parentNode 要设置的对象
*/
public void setParentNode(TreeNode parentNode) {
this.parentNode = parentNode;
}
/**
* 获取子节点
* @return
*/
public List<TreeNode> getChildNodes() {
return childNodes;
}
/**
* 设置子节点
* @param childNodes
*/
public void setChildNodes(List<TreeNode> childNodes) {
this.childNodes = childNodes;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
/**
* 添加子节点
* @param treeNode
*/
public void addChildNode(TreeNode treeNode){
treeNode.parentNode = this;
childNodes.add(treeNode);
}
/**
* 移除节点对象
* @param treeNode 要移除的节点对象
*/
public void removechildNode(TreeNode treeNode){
Iterator<TreeNode> iterator = childNodes.iterator();
TreeNode next = null;
while(iterator.hasNext()){
next = iterator.next();
if(next == treeNode){
childNodes.remove(next);
break;
}
}
}
/**
* 根据索引移除节点
* @param index 要移除节点的子节点
*/
public void removechildNode(int index){
childNodes.remove(index);
}
/**
* 根据索引获取子节点
* @param index
* @return
*/
public TreeNode getChildNode(int index){
return childNodes.get(index);
}
/**
* 返回子节点个数
* @return
*/
public int childNodeSize(){
return childNodes.size();
}
}
package com.link;
public class TreeTest {
public static void main(String[] args) {
Tree tree = new Tree();
tree.addNodes(new TreeNode("1", "a"));
tree.addNodes(new TreeNode("2", "b"));
tree.addNodes(new TreeNode("3", "c"));
tree.addNodes(new TreeNode("4", "d"));
tree.getNode(0).addChildNode(new TreeNode("11","aa"));
tree.getNode(0).addChildNode(new TreeNode("12","bb"));
tree.getNode(0).addChildNode(new TreeNode("13","cc"));
tree.getNode(0).addChildNode(new TreeNode("14","dd"));
tree.getNode(1).addChildNode(new TreeNode("21","aa1"));
tree.getNode(1).addChildNode(new TreeNode("22","bb1"));
tree.getNode(1).addChildNode(new TreeNode("23","cc1"));
tree.getNode(1).addChildNode(new TreeNode("24","dd1"));
tree.getNode(3).addChildNode(new TreeNode("31","aa13"));
tree.getNode(3).addChildNode(new TreeNode("32","bb13"));
tree.getNode(3).addChildNode(new TreeNode("33","cc13"));
tree.getNode(3).addChildNode(new TreeNode("34","dd13"));
TreeNode node = new TreeNode();
for(int i =0 ;i<tree.size();i++){
for(int j =0 ;j<tree.getNode(i).childNodeSize();j++){
node = tree.getNode(i).getChildNode(j);
System.out.println("i:"+i+",j:"+j+",---"+node.getText() +",parent:"+ node.getParentNode().getText());
}
}
}
}