关于二叉树的几种类型 满二叉树、完全二叉树、完美二叉树的定义和命名在国内和Wiki的区别

最近在做面试题时由于和同学对树的层,深度高度等概念理解的分歧然后 看了下Wiki对binary tree的定义,又读了一篇文章(作者 skyline0623 在文章:关于二叉树,我们的中国特色),发现关于二叉树的一些概念国内和国外定义的区别,然后整理了一下 希望可以在碰到不同情况对各种名称能正确理解文章意思。

首先贴上Wiki中对二叉树的这几种类型的定义:

1.满二叉树(full binary tree):

  1.1 直接定义:除根节点以外的每个节点要么有0个要么2个节点,

  1.2 递归形式的定义:

        要么只有一个顶点,

        要么由一个顶点和(包含)两个满二叉树作为其子树。

 

2.完全二叉树(complete):

除了最后一层其他每一层都是完全填满的,而最后一层从左往右依次排列。

 

3.完美二叉树(perfect binary tree):

所有内部节点都有两个子节点,并且所有叶节点的深度相同。

 

这样结合skyline0623的文章来总结一下就是:

     1.  严版的对于二叉树的 层,深度,和高度均为从根=1开始往下递增,

     2. CLRS的定义则是,根的深度为0,往下递增;高度从小为0递增至根;因此每个节点的高度和深度“互补” 其和为整个树的高度;且没有提到层者一概念。

     3. 还有就是 国内的满二叉树其实指的是完美二叉树 而对wiki上的满二叉树没有命名;

     4. CLRS中称完美二叉树为完全二叉树,称完全二叉树(二叉堆)为近似完全二叉树(nearly complete binary tree)

     另外想补充一下,在其他用到二叉树结构的算法中均以国外标准来,做题时候或者讲到层的时候按照严版定义。

  下面附上我整理对比的以Wiki定义为基准的几种叫法的对照表:

《关于二叉树的几种类型 满二叉树、完全二叉树、完美二叉树的定义和命名在国内和Wiki的区别》

有错误还请批评指正,希望能帮到之前对这些定义有疑惑的朋友!数据结构与算法

    原文作者:满二叉树
    原文地址: https://blog.csdn.net/B_tsao/article/details/83043175
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞