【问题标题】:Deleting the roots parent in a binary searach tree - Java在二叉搜索树中删除根父节点 - Java
【发布时间】:2015-11-21 16:37:43
【问题描述】:

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

 public Node(Comparable data) {
                this.data = data;
                parent = null;
                left = null;
                right = null;
            }

如果我想删除根并让左或右孩子成为根,我需要将根设置为左/右孩子,然后让父为空。

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

这是我尝试过的,但它会引发 nullPointerException。

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

我拥有所有必要的 getter 和 setter。

【问题讨论】:

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

标签: java nullpointerexception binary-search-tree


【解决方案1】:

首先你需要检查它是否有左节点/子节点。 我不知道 getter/setter 代码,但我假设 get 代码不处理异常。
所以简而言之,你需要检查它是否有左节点..只有当它不为空时才调用获取代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多