Java 设计更高效的树
假设我们有一个基本的二叉树,能够递归搜索:Java 设计更高效的树,java,algorithm,recursion,tree,Java,Algorithm,Recursion,Tree,假设我们有一个基本的二叉树,能够递归搜索: class BinaryTree{ private int Element; private BinaryTree LeftNode; private BinaryTree RightNode; //Class Constructors //Class Methods } 我最初学习二叉树和普通树的设计主要是因为它简单易用。然而,有人讨论过,在这种设计中,每次我展开树,也就是在LeftNode或Righ
class BinaryTree{
private int Element;
private BinaryTree LeftNode;
private BinaryTree RightNode;
//Class Constructors
//Class Methods
}
我最初学习二叉树和普通树的设计主要是因为它简单易用。然而,有人讨论过,在这种设计中,每次我展开树,也就是在LeftNode或RightNode中添加一个BinaryTree实例时,另一个BinaryTree的实例化也需要保留内存空间来存储类BinaryTree的所有非静态方法。随着树的指数增长,所需的空间量也将大幅增加 是否有更有效的方法来实现递归树设计,同时保持面向对象的范例?您的假设: 另一个二进制树的实例化也需要保留 存储类BinaryTree的所有非静态方法的内存空间 这是不正确的
类实例方法不会占用类的每个新实例的空间。实例占用的唯一内存空间是其数据。什么?这种担心没有任何意义。树不是“指数”增长的,并且不需要额外的内存空间来存储方法。您已经有了正确、高效的实现。”还需要保留内存空间来存储类BinaryTree的所有非静态方法”-否。方法不会在实例中占用空间。请参阅,对象的开销很小(请参阅),但它与节点数成正比。存储平衡二叉树所需的内存在深度上是指数级的,这也意味着它与节点数成正比。当然,您可以将树节点的字段存储在一个数组中,也可以将子节点的索引存储在另外两个数组中,但这会导致更多的问题,而解决不了这些问题。。。