java - 树结构方法

时间:2012-05-04 15:03:17

标签: java data-structures recursion binary-tree

我被要求写一个递归方法来调查是否有任何一个孩子。我已经得到了基本情况,但我对如何处理递归部分感到有点困惑,因为我需要调查右边和左边的子树,如果其中一个有一个子节点则返回false,如果其中一个有子节点则返回true 0个孩子或复发。

到目前为止我所拥有的是:

public static boolean noSingleChildren( BinaryTreeNode t ) { 
    if (rightC == null || leftC == null) {
         return false;
    } else if (rightC == null && leftC == null) {
        return true;
    } else {
        return............
    }
}

3 个答案:

答案 0 :(得分:2)

逻辑非常简单:

  1. 如果当前节点只有一个孩子,那么就完成了。
  2. 否则,递归地询问每个非null孩子相同的问题,并使用逻辑“或”组合答案。
  3. 因为这看起来像是家庭作业,所以我将实施留给你。

答案 1 :(得分:1)

public static boolean noSingleChildren( BinaryTreeNode t ) { 
    if (rightC == null || leftC == null) {
         return false;
    } else if (rightC == null && leftC == null) {
        return true;
    } else {
        return noSingleChildren(t.getLeftBranch()) || noSingleChildren(t.getRightBranch());
    }
}

答案 2 :(得分:1)

何,我喜欢树木问题:

public static boolean hasSingleChildren( BinaryTreeNode t ) { 
    if (t == null) {
         return false;
    } else if (t.rightC == null && t.leftC != null) {
        return true;
    } else if (t.rightC != null && t.leftC == null) {
        return true;
    } else {
        return hasSingleChildren(t.rightC) || hasSingleChildren(t.leftC);
    }
}