Java: For循环在递归函数中的一个元素后停止

Java: For Loop stops after one element in a recursive function

我正在 java 从头开始​​构建树结构。为了获得我的树的高度,我使用了递归函数。

每个笔记 (IP) 都包含它拥有的所有连接的列表,其中包括 parent。我的想法是遍历所有 children 并在不是 parent.

时再次调用高度函数

我的问题是,它只调用一个 child 而不会遍历所有可能的 children。也许有人可以告诉我我的错在哪里。

如果一个Note有两个children并且每个Note还有另外两个。它在两次迭代中只查看第一个。

 public int recursiveGetHight(final Node node, Node parent) {
    Node viewPoint = getViewPoint(node);
    int h = 0;
    for (Node child : viewPoint.getChildren()) {
        if (child.getChildren().size() <= 1) {
            return 0;
        } else if(parent == null || child.getValue() != parent.getValue()){
            h = recursiveGetHight(child, viewPoint) + 1;
            return h;
        }
    }
    return h;
}

举例:

root
    - note 1
        - sub note 1
        - sub note 2
            - x
            - y
    - note 2
        - sub note 1
         - z
        - sub note 2

int h = recurisvHeight(root, null)

result should be 3 but the function returns 2. 

如果我在 for 循环中执行打印命令

System.out.println(child);

它显示: 注1 子注释 1

这是因为你使用了return,当你让return你的函数结束时。 您必须删除第一个 return = 0 并创建一个 ArrayList of child 并通过在列表中追加子项来替换 by 循环中的 return h。