2013-02-20 50 views
1

好吧,这些二叉树现在有点让我疯狂。我提出了一种方法来获取树中的节点数,但结果不正确。总是有一个节点丢失。有任何想法吗?帮助将不胜感激,因为我不希望自己成为一棵树仇敌:)为什么这种方法计算二叉树的大小不起作用?

public int size() { 
    if (this == null) { 
     return 0; 
    } else { 
     return 1 + (right != null ? right.size() : 0) 
       + (left != null ? left.size() : 0); 
    } 
} 
+4

我觉得'this'永远不能为空。除此之外,你的逻辑看起来是正确的。您能否提供一个示例,说明此代码无法产生正确的结果? – recursive 2013-02-20 21:49:13

+1

你可以粘贴整个类或至少一个构造函数和类成员吗? – MrKiller21 2013-02-20 21:50:03

+0

等一下。示例即将到来! – user1420042 2013-02-20 21:52:28

回答

0

首先把如果(这个== NULL)是完全没用的,当你是在调用一个方法,可以彻底清除因此它不是空的。 然后,你能提供一些输入和输出数据以及预期的结果吗?我们只能在这里做出假设,代码似乎是合法的。

+3

这应该是一条评论。 – 2013-02-20 21:51:20

+0

确实......对不起。但为了做到这一点,我需要更多的代表。 :) – benzonico 2013-02-20 21:53:20