📜  二叉树 | Set 3(二叉树的类型)

📅  最后修改于: 2022-05-13 01:57:16.394000             🧑  作者: Mango

二叉树 | Set 3(二叉树的类型)

我们已经讨论了集合 1 中的二叉树简介和集合 2 中二叉树的属性。在这篇文章中,讨论了二叉树的常见类型。

以下是常见的二叉树类型。

完全二叉树 如果每个节点都有 0 或 2 个子节点,则二叉树是完全二叉树。以下是完整二叉树的示例。我们也可以说一棵完全二叉树是一棵二叉树,其中除了叶节点之外的所有节点都有两个孩子。

18
           /       \  
         15         30  
        /  \        /  \
      40    50    100   40

             18
           /    \   
         15     20    
        /  \       
      40    50   
    /   \
   30   50

               18
            /     \  
          40       30  
                   /  \
                 100   40

完全二叉树:二叉树是一棵完全二叉树,如果除了可能的最后一层之外所有层都被完全填满,并且最后一层的所有键都尽可能离开

以下是完全二叉树的示例

18
           /       \  
         15         30  
        /  \        /  \
      40    50    100   40


               18
           /       \  
         15         30  
        /  \        /  \
      40    50    100   40
     /  \   /
    8   7  9 

完全二叉树的实际例子是二叉堆。

完美二叉树二叉树是一棵完美二叉树,其中所有内部节点都有两个孩子,所有叶子节点都在同一级别。
以下是完美二叉树的示例。

18
           /       \  
         15         30  
        /  \        /  \
      40    50    100   40


               18
           /       \  
         15         30  

在完美二叉树中,叶子节点的数量是内部节点的数量加 1

L = I + 1 其中 L = 叶节点数,I = 内部节点数。

高度为 h 的完美二叉树(其中二叉树的高度是树中从根节点到任意叶节点的最长路径中的边数,根节点的高度为 0)有 2 h+1 – 1节点。

完美二叉树的一个例子是家族中的祖先。以人为本,父母为子,父母之父母为子。

平衡二叉树
如果树的高度为 O(Log n),其中 n 是节点数,则二叉树是平衡的。例如,AVL 树通过确保左右子树的高度差最大为 1 来保持 O(Log n) 高度。红黑树通过确保数量保持 O(Log n) 高度每个根到叶路径上的黑色节点的数量相同,并且没有相邻的红色节点。平衡二叉搜索树在性能方面很好,因为它们为搜索、插入和删除提供了 O(log n) 时间。

退化(或病态)树每个内部节点都有一个子节点的树。这样的树在性能方面与链表相同。

10
      /
    20
     \
     30
      \
      40     

资源:
https://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees