假设我们有一个基本的二叉树,可以递归搜索:
class BinaryTree{
private int Element;
private BinaryTree LeftNode;
private BinaryTree RightNode;
//Class Constructors
//Class Methods
}
我最初学习二叉树和一般树的这种设计主要是因为它简单易用。然而,有人用这种设计讨论过,每次我扩展树,也就是将BinaryTree的实例添加到LeftNode或RightNode时,另一个BinaryTree的实例化也需要保留内存空间来存储BinaryTree类的所有非静态方法。随着树呈指数增长,所需的空间量也将大幅增加。
是否有更有效的方法来实现递归树设计,同时坚持面向对象的范例?
答案 0 :(得分:2)
你的假设:
另一个BinaryTree的实例化也需要保留 用于存储BinaryTree类的所有非静态方法的内存空间。
不正确。
类实例方法不占用类的每个新实例的空间。实例占用的唯一内存空间是其数据。