完全二叉树的叶子节点数

给定一个完全二叉树,公有840个节点,求叶子节点的个数。对于这样一个题目,我们要推导一个推论来计算。

基本概念

首先,我们需要掌握基本概念,掌握二叉树、完全二叉树的概念,否则无法区分,这里不再赘述。

接着,需要引入一个在图中常用,在树中不常用的概念:度。可以仿借图的出度来定义理解,二叉树的度指该节点引出的边数(节点下面的边),也即节点的子节点树。那么二叉树有3种度:

  • n0: 度为0,即为叶子节点数量。
  • n1: 度为1,即为只有左子树或者右子树的节点数量,对于完全二叉树,只可能存在一种情况,节点数为奇数时有一个节点只有一个左子树,所以n1 = 0 or 1。
  • n2:度为2,即有左右节点的节点数量。
引理 n0 = n2 + 1

证明:

  • 假设树的节点数是n,那么n = n0 + n1 + n2。
  • 按照入度考虑一下(节点上面的边),除了根节点,每个节点都有一条入边,所以边数为n-1;而边的数量为2*n2 + n1
  • 结合上面两个推导: n = n0 + n1 + n2 = 2*n2 + n1 + 1,化简得到n0 = n2 + 1
推理 n0 = n/2 or (n-1)/2

证明:

  • 由于n = n0 + n1 + n2,而n0 = n2 + 1,所以n = 2n0 + n1 - 1
  • 对于完全二叉树,如果n为偶数,说明不存在只有子节点的节点,n1 = 0, n0 = (n+1)/2;如果n为奇数,说明存在1个只有左子节点的节点,那么n1 = 1, n0 = n/2。可以合并为n0 = (n+1)/2。
小结

根据结论n0 = (n+1)/2, 所以结果为420。在整个过程中,我们不需要去记忆结论,而是记住推理的过程,这样就是利用第一性原理在学习。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树形结构 在前面章节中介绍到的数据结构,都为线性结构,比如链表,数组,队列等,都属于线性结构,类似于通过一根线串在...
    ducktobey阅读 1,274评论 0 0
  • 树的基本概念 节点,根节点,父节点,子节点,兄弟节点都是属于树的范涛; 一棵树可以没有任何节点,称为空树; 一棵树...
    coder_feng阅读 1,131评论 0 0
  • 1. 树的概念 一个树由节点组成,这些节点包含根节点,父节点,子节点,兄弟节点;没有任何一个节点的树称为空树;如果...
    HChase阅读 6,397评论 0 34
  • 二叉树是最常用的数据结构之一,笔者过去一直将关注点放在复杂的树结构(例如红黑树,自平衡树),认为那些才是树的重要应...
    潮汐行者阅读 2,977评论 0 7
  • 本人正在学习的过程中,若有不足或者错误,希望能够指出 希望我写的这些,能够帮到看到这篇文章的你 涉及到的知识: 1...
    愿你能温柔的对待世界阅读 4,425评论 0 1