我有BinaryTreeNode(int值)及其左右子类和BinaryTree(int rootVal),BinaryTreeNode根,其中rootVal为其值.我开发了一个代码来计算树中的节点数(在BinaryTreeNode类中),但是由于NullPointerException它不起作用:
public int size(){ if(this == null) { // base case return 0; } else { return 1 + left.size() + right.size(); } }
然而,我发现的另一种解决方案,采用类似的策略,有效:
public int size(BinaryTreeNode refNode){ if(refNode == null) { // base case return 0; } else { return 1 + size(refNode.left) + size(refNode.right); } }
我已经理解为什么我的代码抛出异常(因为左/右指向null).但我想理解为什么第二种解决方案与准原理相同.先感谢您!