保持二进制搜索树节点深度更新

时间:2015-04-16 00:48:36

标签: binary-search-tree depth

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

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

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

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

我不是在寻找代码,只是一般的游戏计划或伪代码

2 个答案:

答案 0 :(得分:0)

我认为这个问题对我来说似乎比实际上更复杂。在绘制了几棵树之后,在有两个孩子的节点上(在纸上)应用了删除功能,我注意到只有一个节点真正改变了深度 - 替换已删除节点的节点。

我设置节点N的深度,用R的深度替换节点R.

答案 1 :(得分:0)

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