如何在删除某些内容后更新二叉搜索树节点的深度属性?
我想在我删除一个子节点的情况下,我可以将删除的节点的父节点下的每个节点的深度设置为(原始深度 - 1)。
但是,当我删除有两个孩子的节点时,我想不出保持深度更新的好方法。
对于删除带有两个子节点的节点,我的删除方法要么移动右子树中最左边的节点,要么移动左子树中最右边的节点,直到我要删除的节点,具体取决于在哪条路上更短。
我不是在寻找代码,只是一般的游戏计划或伪代码
答案 0 :(得分:0)
我认为这个问题对我来说似乎比实际上更复杂。在绘制了几棵树之后,在有两个孩子的节点上(在纸上)应用了删除功能,我注意到只有一个节点真正改变了深度 - 替换已删除节点的节点。
我设置节点N的深度,用R的深度替换节点R.
答案 1 :(得分:0)
表示深度聚合的数据结构是直方图,即从深度到计数的字典映射。删除叶子是直方图的单个更新,而删除非叶子是留给读者的练习。