Java BST中的内存和指针

Java BST中的内存和指针,java,search,binary-search-tree,Java,Search,Binary Search Tree,在接受简单对象的二元搜索树中…为左、右和父对象创建getter和setter方法时。设置父节点时会发生什么,这是一个值得关注的问题。下面的代码 守则: public void setParent(Person parent) { parent = new Person( parent.getName(), parent.getWeight()); 激发代码灵感的示例代码: public void setParent(Node parent) { this.parent = pare

在接受简单对象的二元搜索树中…为左、右和父对象创建getter和setter方法时。设置父节点时会发生什么,这是一个值得关注的问题。下面的代码

守则:

 public void setParent(Person parent) {
  parent = new Person( parent.getName(), parent.getWeight());
激发代码灵感的示例代码:

 public void setParent(Node parent) {
  this.parent = parent;
 }

您正在创建本质上是父对象克隆的对象。这与仅保存指向父对象的指针不同

显然,复制父对象会占用更多内存空间。更重要的是,你没有复制父母的参考资料。因此,如果您尝试遍历树,转到一个节点的父节点,然后尝试访问它的其他子节点,您将绘制一组空指针

this.parent
是对当前对象的
parent
指针的引用

实际上,这并不意味着
这个
是一个家长。实际上,
this.parent
用于区分本地
parent
指针和传入参数
parent

class Person{
    Person parent; // <---- this is the "this.parent" attribute, and is initially undefined
    public void setParent(Person parent){ // <---- the "Person parent" on this line is an incoming parameter
        this.parent = parent; //<---- "this.parent" refers to the attribute, and "parent" refers to the parameter
    }
}
班级人员{

Person parent;//问题有点不清楚。是哪种编程语言?您是否在询问当请求左/右/父节点时是否允许返回null?这是家庭作业吗?为什么节点需要知道其父节点是谁?这只会让跟踪变得一团糟。如果您不跟踪谁是您的父节点,您如何构建一个树???