二叉树的大小方法

And*_*897 7 java oop binary-tree

我刚刚遇到这个代码来查找二叉树的大小.

public int size() {
  return(size(root)); 
}
private int size(Node node) { 
  if (node == null) return(0); 
  else { 
    return(size(node.left) + 1 + size(node.right)); 
  } 
} 
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么它有两个方法,一个没有参数.我猜这是一个很好的做法但却无法想到原因.

Dan*_*mms 5

一是public,一是private。所以一种是不带任何参数的暴露在外部使用public int size(),另一种是只在内部使用,对外隐藏private int size(Node)

这个概念称为封装,是隐藏不需要公开供一般使用的内部细节的行为,以简化类(或库)的使用。


kai*_*aur 4

OOP 建议您应该在私有方法中编写业务逻辑。根据我的带有参数的视图大小方法是私有的,并且计算大小的逻辑在这里,因此没有其他(类之外)可以修改或访问您的逻辑(通过继承)您正在使用另一个尺寸来返回具有公共修饰符的尺寸方法,其他用户将使用该类来获取尺寸,基本上其他用户不知道您如何计算尺寸。