我正在尝试使用这段代码找到BST的大小。
public static void main(String[] args) {
BST bst = new BST();
int [] arr = {12, 15,7,3,81, 9};
for (int i = 0; i <arr.length; i++) {
bst.add(arr[i]);
}
System.out.print(size(bst.root));
}
public static int size(Node node){
if (node != null) {
return size(node.left) +1 + size(node.right) + 1;
}else
return 0;
}
我得到的答案是12,这是第一个元素。我做错了什么?
答案 0 :(得分:4)
你得到12的原因是你的代码返回树中元素数量的两倍(其中有6个元素)。 12也恰好是第一个元素的事实纯属巧合。
return
语句应为:
return 1 + size(node.left) + size(node.right);
即。此节点加上左子树的大小加上右子树的大小。
你拥有的第二个+1
是错误的。
答案 1 :(得分:2)
+1
。