树,不是二叉树

muwinger 2010-04-06 03:52:17
我想实现树的数据结构,不是二叉树。有一个根,有n个children,每个child可以有子树。
这个要怎么实现,给点思路啊。。。
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liboofsc 2010-04-07
  • 打赏
  • 举报
回复
因为不能改,突然想起两个方法应该改一下。

public void removeChildren(int index){
childrenNodes.get(index).setFatherNode(null);
childrenNodes.remove(index);

}

public void removeAllChildren(){
childrenNodes.clear();
}

public int addChildrenNode(TreeNode childrenNode) {
childrenNodes.add(childrenNode);
childrenNode.setFatherNode(this);
return childrenNodes.size() - 1;
}
liboofsc 2010-04-07
  • 打赏
  • 举报
回复
随便写了个,时间紧,只写了个大概,很多方法没写全,参考下吧。

package entity;

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

public class TreeNode {

private TreeNode fatherNode = null;

private List<TreeNode> childrenNodes = new ArrayList<TreeNode>();

private String nodeName = null;

private Object nodeValue = null;

public boolean hasChildren(){
return childrenNodes.size() > 0 ? true : false;
}

public void removeChildren(int index){
childrenNodes.remove(index);
}

public void removeAllChildren(){
childrenNodes.clear();
}

public int addChildrenNode(TreeNode childrenNode) {
childrenNodes.add(childrenNode);
return childrenNodes.size() - 1;
}

public List<TreeNode> getAllChildrenNodes() {
return childrenNodes;
}

public String getNodeName() {
return nodeName;
}

public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}

public Object getNodeValue() {
return nodeValue;
}

public void setNodeValue(Object nodeValue) {
this.nodeValue = nodeValue;
}

public TreeNode getFatherNode() {
return fatherNode;
}

public void setFatherNode(TreeNode fatherNode) {
this.fatherNode = fatherNode;
}


public static void main(String[] args) {
TreeNode root = new TreeNode();
root.setNodeName("根节点");
root.setNodeValue("四川省");

TreeNode child1 = new TreeNode();
child1.setNodeName("子节点");
child1.setNodeValue("成都市");

TreeNode child2 = new TreeNode();
child2.setNodeName("子节点");
child2.setNodeValue("成华区");

TreeNode child3 = new TreeNode();
child3.setNodeName("子节点");
child3.setNodeValue("金牛区");

TreeNode child4 = new TreeNode();
child4.setNodeName("子节点");
child4.setNodeValue("锦江区");
//root.a;

root.addChildrenNode(child1);

child1.addChildrenNode(child2);
child1.addChildrenNode(child3);
child1.addChildrenNode(child4);


//遍历的时候用根节点开始,用递归往下面遍历,直到节点没有子节点为止。


}

}

horizonlyhw 2010-04-06
  • 打赏
  • 举报
回复
直接hashtable套起來就行了~
gentalguo 2010-04-06
  • 打赏
  • 举报
回复
什么意思?没有看明白呢?
你要做成什么样子?一个动态配置的工具?
一个提供二次开发的小平台?
还是说你有这样的一租数据要展现?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧