Java在二叉搜索树中计算单亲数?
我试图创建一个名为singleParent的方法,该方法统计BST中只有一个子节点的节点数。出于某种原因,我的单亲方法返回0 我的代码: 二叉树 我的主要方法是: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);
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;
}