删除二进制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。在另一种可能的情况下,旧根本身是空的,好吧,没有什么可做的。