还有一个参数是私有的,这意味着我只能使用类似的东西
MyBinaryTree bt = new MyBinaryTree();
int treeSize = bt.size();
通常代码可以有注释以了解它们的含义。有时干净的代码甚至不需要注释。
/**
* Gets the size of the current binary tree.
*/
public int size() {
return(size(root));
}
/**
* Gets the size of the given branch
* @param node The branch to count from.
*/
private int size(Node node) {
if (node == null) return(0);
else {
return(size(node.left) + 1 + size(node.right));
}
}
理论上,二叉树中所有有孩子的分支也可以作为二叉树处理。
请注意,size()
将以根节点作为参数调用第二个,在这种情况下,这意味着从 A 开始计数,在内部它将是。
Size of the tree is count of items from A
Items from A are 1 + Items from B + Items from C
Items from B are 1
Items from C are 1 + Items from D + items from E
现在,为什么要使用具有相同名称和不同参数的方法?
做或不做的理由可能很少。通常这意味着有不止一种方法可以做某事,或者您想使用其他东西作为默认值,在这种情况下, size() 将用作默认根。