计算 BST 中只有一个 child 的节点
Couting nodes with onyl one child in BST
我想知道如何在 BST 中计算只有一个 child 的节点。
我试过这样的事情:
public int countOneChild(Node x)
{
if(x == null)
{
return 0;
}
/*if(x.right == null && x.left == null)
{
return 0;
}*/
if(x.left == null && x.right != null)
{
return 1 + countOneChild(x.right);
}
else if(x.left != null && x.right == null)
{
return 1 + countOneChild(x.left);
}
else
{
return 0 + countOneChild(x.right) + countOneChild(x.right);
}
}
但这不起作用,它 returns 我每次都得到相同的结果 0。
我该怎么做?
我认为底部的 else 子句有一个 copy/paste 错误。大概应该是:
else
{
return 0 + countOneChild(x.right) + countOneChild(x.left);
}
我想知道如何在 BST 中计算只有一个 child 的节点。 我试过这样的事情:
public int countOneChild(Node x)
{
if(x == null)
{
return 0;
}
/*if(x.right == null && x.left == null)
{
return 0;
}*/
if(x.left == null && x.right != null)
{
return 1 + countOneChild(x.right);
}
else if(x.left != null && x.right == null)
{
return 1 + countOneChild(x.left);
}
else
{
return 0 + countOneChild(x.right) + countOneChild(x.right);
}
}
但这不起作用,它 returns 我每次都得到相同的结果 0。 我该怎么做?
我认为底部的 else 子句有一个 copy/paste 错误。大概应该是:
else
{
return 0 + countOneChild(x.right) + countOneChild(x.left);
}