tree - 平衡树的定义

标签 tree

我只是想知道是否有人能为我澄清平衡树的定义。我认为“如果每个子树都是平衡的并且两个子树的高度最多相差一棵树,那么这棵树就是平衡的。

如果这是一个愚蠢的问题,我很抱歉,但是这个定义是否适用于一直到树的叶子的每个节点,或者仅适用于紧邻根的左右子树?我想另一种框架方式是,树的内部节点是否可能不平衡,而整个树保持平衡?

最佳答案

约束通常递归地应用于每个子树。也就是说,只有满足以下条件,树才是平衡的:

  1. 左右子树的高度最多相差一,并且
  2. 左子树是平衡的,并且
  3. 右子树是平衡的

据此,下一棵树是平衡的:

     A
   /   \
  B     C  
 /     / \  
D     E   F  
     /  
    G  

下一个平衡,因为 C 的子树高度相差 2:

     A
   /   \
  B     C   <-- difference = 2
 /     /
D     E  
     /  
    G  

也就是说,第一点的具体约束取决于树的类型。上面列出的是典型的 AVL trees .

Red-black trees例如,施加更软的约束。

关于tree - 平衡树的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015630/

相关文章:

c# - 获得 List<object> 之间差异的最快方法

multithreading - Perl:使用多线程构建复杂对象树

javascript - 从祖先数据构建嵌套列表?

typescript - 如何使用角度 Material 树以角度 6 保存选中的节点?

java - 如何动态填充JTree?

java - 如何在Java中以树形结构显示列表数据?

java - SWT 树 > 将垂直滚动条移动到树的左侧而不改变方向

javascript - 遍历从 JQuery XML 对象返回的子对象的子对象

c++ - 在二叉搜索树中搜索对象

python - 使用父指针在二叉搜索树中删除