所有子节点的子节点数相等还是0

时间:2019-03-30 11:50:30

标签: java recursion tree

我正在尝试编写一个代码,该代码说明所有父节点的子节点数是否相等。换句话说,如果所有父母都有相同数量的孩子。如果某个节点不是父节点,则不会将其视为错误。但是,我的代码无法正常工作。当最后一个级别与预期数字不匹配时,它不会返回false。

我已经确定,所有子节点都必须具有与根节点相同数量的子节点。

public boolean equalNumberOfChildren() {
    boolean correct = true;
    for (Person child : children) {
        correct = child.equalNumberOfChildren();
        if (correct == true && child.children.size() == children.size() || child.children.size()==0) {
            correct = true;
        }else {
            correct = false;
        }
    }
    return correct;
}

1 个答案:

答案 0 :(得分:0)

您将覆盖递归调用的结果。您仅在递归调用被发现“正确”的情况下才需要询问孩子

    correct = child.equalNumberOfChildren();  // assign value to correct
    // continue only if not found discrepency 
    if (correct && (child.children.size() == children.size() || child.children.size()==0)) {
        correct = true;
    }else {
        correct = false;
    }
}
return correct;