删除二进制searach树中的根父级-Java

删除二进制searach树中的根父级-Java,java,nullpointerexception,binary-search-tree,Java,Nullpointerexception,Binary Search Tree,因此,我有一个二叉树完全工作,每个节点中存储的值如下所示: public Node(Comparable data) { this.data = data; parent = null; left = null; right = null; } 如果我想删除根并使左或右子级成为根,我需要将根设置为左/右子级,然后使父级为空 唯一会发生这种情况

因此,我有一个二叉树完全工作,每个节点中存储的值如下所示:

 public Node(Comparable data) {
                this.data = data;
                parent = null;
                left = null;
                right = null;
            }
如果我想删除根并使左或右子级成为根,我需要将根设置为左/右子级,然后使父级为空

唯一会发生这种情况的是当所有左侧节点都为空且根节点最小时,右侧也是如此

这是我尝试过的,但它抛出了一个nullPointerException

root = root.getLeft();
root.setParent(null);

我有所有必要的getter和setter。

首先需要检查它是否有左节点/子节点。 我不知道getter/setter代码,但我假设get代码不处理异常。

因此,简而言之,您需要检查它是否有左节点。仅当它不为null时调用get code。

旧根的左子级可能为null。在这种情况下,您只需检查,不需要调用setter。在另一种可能的情况下,旧根本身是空的,好吧,没有什么可做的。