我有一棵树,里面有3种信息。每个节点都是一个Pair<String, Float>
:
(s,float)
(s,null)
。(s,null)
。我需要用树中的所有决策填充list<String>
。
判断该决定是否成立的方法是该特定决定的leftNode
和rightNode
为空,树看起来像这样:
Feature(s,3)
------------------/ \------------------
Feature(s,2) Feature(s,1)
-------/ \--------- ----------/ \------
Feature(s,null) Decision(s,null) Decision(s,null) Decision(s,null)
-----/ \---
D(s,null) D(s,null)
我尝试过一种递归方法来遍历树,直到返回列表为止,但是我不确定如何停止该方法。我什么时候可以返回列表?
private void addTreeNode(TreeNode element, TreeNode currentRoot) {
if (currentRoot.equals(null)) {
currentRoot = element;
}
if (root.leftNode == null) {
root.leftNode = element;
} else if (root.rightNode == null) {
root.rightNode = element;
} else {
if (root.leftNode.leftNode == null || root.leftNode.rightNode == null) {
currentRoot = root.leftNode;
addTreeNode(element, currentRoot);
} else {
currentRoot = root.rightNode;
addTreeNode(element, currentRoot);
}
}
}
public List<String> getDecisions() {
List<String> array = new ArrayList();
return getDecisionsAux(root, array);
}
private List<String> getDecisionsAux(TreeNode root, List<String> array) {
if (root.leftNode == null && root.rightNode == null && root != null) {
array.add(root.data.first());
}
if (root != null) {
getDecisionsAux(root.leftNode, array);
getDecisionsAux(root.rightNode, array);
}
return array;
}
使用此代码,我得到一个NullPointerException
,但不确定为什么。有人可以帮忙吗?