将height属性添加到二叉搜索树

时间:2012-04-27 04:22:40

标签: binary-search-tree

我获得了一个Binary Search Tree类,用于实现Set。它具有所有基本功能,插入,删除和检查特定值是否存在。还提供了用于树的Node类。该节点有一个未使用的类变量height

class TreeNode{
    .......
    public int height;
    .......
}

这是节点类的过度简化版本。现在我应该编写一个新类,通过使用此height来扩展此类的功能,以便跟踪每个节点的高度,其中高度为:

  • 0,如果节点没有子树,
  • -1表示空
  • 1+最大子树的高度。

这里的问题是我不能修改给我的代码,也不能简单地复制现有代码的大部分并修改它以满足我的需要,即我必须调用超类函数{{1}然后添加一些代码来更新高度,这段代码应该只为整个函数的运行时添加一个常量。我提出了一个解决方案,我打电话给add(),然后我沿着搜索路径前往新添加的元素,以便更新高度。虽然这有效,但这是一个非常混乱的解决方案。

我目前的解决方案如下:

  • 调用super.add(),它本身就是一个递归函数(BST的标准添加函数)
  • 现在添加了元素,调用私有帮助函数,该函数获取已添加的值,递归搜索它,然后沿该搜索路径更新高度信息。

我只是想在这里暗示一下,因为我觉得有些东西让我不知所措,我觉得自己陷入了精神障碍。不要发布源代码。答案实际上是反问题迫使我思考也很受欢迎。

0 个答案:

没有答案