Java在二叉搜索树中计算单亲数?

Java在二叉搜索树中计算单亲数?,java,binary-tree,binary-search-tree,Java,Binary Tree,Binary Search Tree,我试图创建一个名为singleParent的方法,该方法统计BST中只有一个子节点的节点数。出于某种原因,我的单亲方法返回0 我的代码: 二叉树 我的主要方法是: public static void main(String[] args) { BinaryTree bst = new BinarySearchTree(); bst.insert(14); bst.insert(4); bst.insert(15); bst.insert(3);

我试图创建一个名为singleParent的方法,该方法统计BST中只有一个子节点的节点数。出于某种原因,我的单亲方法返回0

我的代码:

二叉树

我的主要方法是:

public static void main(String[] args) {
    BinaryTree bst = new BinarySearchTree();
    bst.insert(14);
    bst.insert(4);
    bst.insert(15);
    bst.insert(3);
    bst.insert(9);
    bst.insert(18);
    bst.insert(7);
    bst.insert(16);
    bst.insert(20);
    bst.insert(5);
    bst.insert(17);

    int count = bst.singleParent();
    System.out.println(count);
}
这将创建一棵树,看起来像:

            14
          /    \
        4       15
       / \        \
      3   9        18
         /        /  \
        7        16   20
       /          \       
      5            17 
所以count应该等于4,因为有4个节点只有一个子节点。任何帮助都将不胜感激

For some reason, my singleParent() method is returning 0.
进行递归调用getSingleParentst.getLeft,count;和getSingleParentst.getRight,count;,但您忽略了它们的返回值

由于这个原因,该方法只检查根节点14是否是单亲节点,而不是单亲节点

实际上,在getSingleParents中不需要count参数:

For some reason, my singleParent() method is returning 0.
private int getSingleParents(TreeNode t) {
    int count = 0;
    if(t != null) {
        if(t.getLeft() == null && t.getRight() != null)
            count++;
        else if(t.getLeft() != null & t.getRight() == null)
            count++;
        count += getSingleParents(t.getLeft());
        count += getSingleParents(t.getRight());
    }
    return count;
}