binary-tree - 如果删除根节点如何重新平衡 BST

标签 binary-tree binary-search-tree avl-tree red-black-tree balanced-binary-search-tree

假设我删除了根节点 (6),如何重新平衡树?

enter image description here

重新平衡树与左旋转还是右旋转有关?根据 AVL 与红/黑的不同,它会有所不同吗?

最佳答案

知道(现已删除)根的每个子树的高度,您可以将两个子树中较高的一个作为新根。 (使两个根中较短的一个会违反你的平衡性)

我不确定是否涉及旋转,因为我记得旋转是在单个子树上实现的,但在这种情况下,您实际上有两棵树;相反,我认为这只是一些引用更新。

在这种情况下,如果 4 是新根,则有两个右子树 - 5 和先前的右子树 7-8。这是有道理的,新右子树的根将是先前右子树的最左边的节点,5 位于其下方。

关于binary-tree - 如果删除根节点如何重新平衡 BST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74858339/

相关文章:

c - 修复二叉树删除函数中的指针(有 2 个子节点的节点)

c - 在二叉搜索树中插入节点 (C)

java - AVL树遍历,搜索问题

Java软件设计: Making a generic tree - printing library

math - CAS - 二叉树替代方案

c - C 中的二叉树 : Traversal specified level

java - 二叉搜索树改变insert方法返回类型

java - 如果找不到节点,它应该在二叉搜索树中进入什么级别

c - 将值插入 AVL 树