Algorithm 基于左右子树大小的平衡二叉搜索树

Algorithm 基于左右子树大小的平衡二叉搜索树,algorithm,tree,binary-search-tree,Algorithm,Tree,Binary Search Tree,我有两个问题: 几乎平衡的BST和几乎完全的二叉树之间的区别是什么。即使前者的定义很明确,我们也可以进行区分,但无法得到相关的文章 今天,在我的课堂上,我学到了平衡的条件: 最大值(大小(根左),大小(根右)) 几乎完成的BST是指除最后一个级别外,所有级别都已填满的BST。这里的定义有点混乱(有些人称此属性为完美)。有关此信息,请参阅。 保持平衡是一个不太严格的标准,即所有(几乎)完整的BST是平衡的,但并非所有平衡的BST都是完整的。在维基百科的那篇文章中也有这样的定义。在我的世界里,BST

我有两个问题:

  • 几乎平衡的BST和几乎完全的二叉树之间的区别是什么。即使前者的定义很明确,我们也可以进行区分,但无法得到相关的文章

  • 今天,在我的课堂上,我学到了平衡的条件:

    最大值(大小(根左),大小(根右))
  • 几乎完成的BST是指除最后一个级别外,所有级别都已填满的BST。这里的定义有点混乱(有些人称此属性为完美)。有关此信息,请参阅。
    保持平衡是一个不太严格的标准,即所有(几乎)完整的BST是平衡的,但并非所有平衡的BST都是完整的。在维基百科的那篇文章中也有这样的定义。在我的世界里,BST是平衡的,如果它导致O(logn)操作成本

  • 例如,可以说BST是平衡的,如果每个子树最多有epsilon*n个节点,其中epsilon<1(例如epsilon=3/4,甚至epsilon=0.999——实际上根本不平衡)。 原因是这样一个BST的高度大约是log_{1/epsilon}n=log_2n/(-log_2epsilon)=O(logn),但是1/(-log_20.99)=99.5是一个巨大的常数。你可以试着用通常的ε=1/2的比值来证明这一点,其中两个子树的大小大致相同


  • 我不知道有哪个普通的BST使用3/4。例如,常见的BST是,或者——如果您在硬盘上——一整套BST。对于您的示例,您可能可以通过使用两个分别表示左子树和右子树中节点数的整数预兆每个节点来实现这些操作。插入或删除某些内容时,从根到叶(或向上)移动时会更新数字,如果条件得到验证,则会进行旋转。

    1。有什么特别的定义吗?我不知道。O(logn)操作复杂性表示平衡,或O(n)最坏情况表示不平衡。