Algorithm 如何消除二叉搜索树的广度优先排序中的差距?
无间隙二叉搜索树是一种具有无间隙特性的自平衡二叉搜索树。“无间隙”属性表示树的宽度优先顺序中没有间隙。宽度优先排序中的间隙最好通过图表来定义。在下图中,红色虚线圆圈突出显示的区域被视为宽度优先顺序中的间隙: 如果重新构造此树以消除间隙,它将如下所示: 如果将数字7添加到此重构树中而不重新平衡,则它将如下所示: 同样,在消除间隙后: 在插入和删除任意大小的树之后,是否有一个log(n)算法来确保gap-less属性 在插入和删除任意大小的树之后,是否有一个log(n)算法来确保gap-less属性 没有Algorithm 如何消除二叉搜索树的广度优先排序中的差距?,algorithm,data-structures,tree,binary-tree,binary-search-tree,Algorithm,Data Structures,Tree,Binary Tree,Binary Search Tree,无间隙二叉搜索树是一种具有无间隙特性的自平衡二叉搜索树。“无间隙”属性表示树的宽度优先顺序中没有间隙。宽度优先排序中的间隙最好通过图表来定义。在下图中,红色虚线圆圈突出显示的区域被视为宽度优先顺序中的间隙: 如果重新构造此树以消除间隙,它将如下所示: 如果将数字7添加到此重构树中而不重新平衡,则它将如下所示: 同样,在消除间隙后: 在插入和删除任意大小的树之后,是否有一个log(n)算法来确保gap-less属性 在插入和删除任意大小的树之后,是否有一个log(n)算法来确保gap-le
看为什么,考虑这棵树(它具有较小的属性):
要插入8,您需要以以下内容结束: 5
/ \
3 7
/| |\
2 4 6 8
/
1
5
/ \
3 7
/| |
2 4 6
这显然需要至少访问每个节点一次,因为每个节点之后都有一个不同的父节点。因此,您不可能保证比O(n)时间更好
同样,要删除1,您需要完成以下操作:
5
/ \
3 7
/| |\
2 4 6 8
/
1
5
/ \
3 7
/| |
2 4 6
同样的问题
在插入和删除任意大小的树之后,是否有一个log(n)算法来确保gap-less属性
没有
看为什么,考虑这棵树(它具有较小的属性):
要插入8,您需要以以下内容结束: 5
/ \
3 7
/| |\
2 4 6 8
/
1
5
/ \
3 7
/| |
2 4 6
这显然需要至少访问每个节点一次,因为每个节点之后都有一个不同的父节点。因此,您不可能保证比O(n)时间更好
同样,要删除1,您需要完成以下操作:
5
/ \
3 7
/| |\
2 4 6 8
/
1
5
/ \
3 7
/| |
2 4 6
这也是同样的问题。第二张图片中的重构有问题
2
是4
的正确子项,尽管它比4
小,但在第二幅图像中,重构有问题2
是4
的右子级,尽管它比4