【问题标题】:keeping binary search tree node depth propery updated保持二叉搜索树节点深度属性更新
【发布时间】:2015-04-16 00:48:36
【问题描述】:

如何在删除某些内容后更新二叉搜索树节点的深度属性?

我在想,对于我删除一个有一个孩子的节点的情况,我可以将删除的节点的父节点下的每个节点的深度设置为(原始深度 - 1)。

但是,当我删除一个有两个孩子的节点时,我想不出一种保持深度更新的好方法。

对于删除具有两个子节点的节点的情况,我的删除方法要么将右子树中最左边的节点或左子树中的最右边节点移动到我要删除的节点,具体取决于哪条路径更短。

我不是在找代码,只是一个通用的游戏计划或伪代码

【问题讨论】:

    标签: binary-search-tree depth


    【解决方案1】:

    我认为这个问题对我来说似乎比实际情况更复杂。画了几棵树,并在一个有两个孩子的节点上应用删除功能(在纸上),我注意到只有一个节点的深度发生了真正的变化——替换被删除节点的节点。

    我设置了节点 N 的深度,用 R 的深度代替了节点 R。

    【讨论】:

      【解决方案2】:

      表示深度聚合的数据结构是直方图,即从深度到计数的字典映射。删除叶子是对直方图的一次更新,而删除非叶子是留给读者的练习。

      【讨论】:

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