我正在尝试确定m-ary树中的所有节点是否已满。我想我有一般的想法,但我不确定。这是我到目前为止所做的。
在我的TreeNode类中,我有以下方法。
public class TreeNode
{
private String label;
private String message;
private TreeNode[] nodes;
private int numChildren;
private TreeNode parent;
private String prompt;
***other methods and constructors***
public boolean isFull()
{
for(int i = 0; i < numChildren; ++i)
{
if(nodes[i] == null)
return false;
}
return true;
}
其中numChildren是数组nodes [](或只是nodes.length)中可能的子节点数,nodes []是当前节点的所有子节点的数组。 此外,知道我的TreeNodes是双向链接可能会有所帮助,因此如果需要,我可以检索当前节点的父节点。
然后,在我的Tree类中,我有以下递归方法。
public boolean allNodesFull(TreeNode n)
{
boolean allFull = false;
if(!n.isFull())
{
return allFull;
}
for (int i = 0; i < n.getNumChildren(); ++i)
{
allFull = allNodesFull(n.getChild(i));
}
return allFull;
}
答案 0 :(得分:1)
没有测试过,希望你已经准备好测试用例并告诉我们它是否有效;)
public boolean allNodesFull(TreeNode n) {
if(!n.isFull()) {
return false;
}
for (int i = 0; i < n.getNumChildren(); ++i) {
if (!allNodesFull(n.getChild(i))) {
return false;
}
}
return true;
}