我正在尝试创建自己的树类,但一直感到非常困惑。基本上我正在尝试制作一棵加权树。我制作了以下节点类:
import java.util.*;
public class subdivNode {
private int nodevalue;
private int nodeID;
private List<subdivNode> childnodes;
public subdivNode(int value, int id){
nodevalue = value;
nodeID = id;
}
public int getValue(){
return nodevalue;
}
public int getId(){
return nodeID;
}
public void addChild(subdivNode child){
childnodes.add(child);
}
public int getNumChildren(){
return childnodes.size();
}
public subdivNode getChild(int pos){ //return's i'th child
return childnodes.get(pos);
}
}
这是迄今为止我的树类的骨架:
public class subdivTree {
private subdivNode rootnode;
public subdivTree(){
rootnode = new subdivNode(0,0);
}
public void addNode(int parent, int value){
}
public int getNodeValue(int node){
return 0;
}
public int getNumChildren(int node){
return 0;
}
}
除此之外我不知道
编辑:抱歉含糊不清。我的问题应该是如何在 subdivTree 中实现 addnode 方法。最终目标是创建一个算法,在树中搜索任意两个节点之间的路径,以获得最大值(将节点之间的所有值相加)。
最佳答案
在处理 addNode 之前,请告诉我们 getNodeValue(int node) 将如何工作。
您有一个 rootNode,您将使用该“节点”值调用它的什么方法?
我不确定,但我认为您的界面已损坏。我认为您通过位置获取和通过 ID 获取的概念混淆了。
画出您期望的数据结构的图片。
关于Java 树类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611052/