在BST中使用onyl一个孩子的Couting节点

时间:2015-06-09 19:14:35

标签: java binary-search-tree nodes children

我想知道如何计算BST中只有一个孩子的节点。 我试过这样的事情:

    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);
       }
   }

但这不起作用,每次都返回相同的结果0。 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我相信底部的else子句有一个复制/粘贴错误。应该是:

   else 
   {
       return 0 + countOneChild(x.right) + countOneChild(x.left);
   }