美文网首页
二叉树-完全二叉树

二叉树-完全二叉树

作者: 嗯o哼 | 来源:发表于2020-11-15 01:52 被阅读0次

\color{#ea4335}{真二叉树} 所有结点度为0或2
\color{#ea4335}{满二叉树}满二叉树 所有结点度为0或2 且叶子节点都在最后一层
\color{#ea4335}{完全二叉树} 叶子结点只会出现在最后两层,且最后一层叶子结点靠左对齐

真二叉树性质

1.度为1的结点只有左子树
2.度为1的结点要么只有1个,要么有0个结点
3.同样结点数量的二叉树,完全二叉树的高度最小

假设完全二叉树的高度为h(h≥1),那么\color{#ea4335}{至少}有2h-1个结点(最后一层至少有一个),\color{#ea4335}{最多}有2h-1个结点(满二叉树)。

如果高度h,总的结点树为n

2h-1 ≤ n < 2h ===推出===》 h - 1 ≤ log_2{n} < h ===》h = floor( log_2{n}) + 1
\color{#ea4335}{(floor 向下取整数)}

一棵树有n(n>0)个结点的完全二叉树,从上到下,从左到右从1开始进行编号,对于任意第i个结点

image.png

1.如果i = 1,它是根结点
2.如果i > 1, 它的父结点编号为floor(i / 2) , \color{#ea4335}{(i / 2 向下取整)}
3.如果 2i < n ,它的左子结点编号为2i
4.如果2i > n, 它没有左子结点
5.如果2i + 1 ≤ n, 它的右子结点编号为2i + 1

思考

一个完全二叉树有768个结点,求叶子结点树个数。

假设:叶子结点树为n0,度为1的节点数为n1, 度为2的结点树为n2

二叉树的边数 = n1 + 2 * n2(度为1有一条边,度为2有两条边) = n - 1(跟结点顶部没有边要减去) = n0 + n1 + n2 - 1 (叶子结点数 + 度为1的结点数 + 度为2的结点数 - 1)
即 n1 + 2 *n2 = n0 + n1 +n2 -1   推出 n0 = n2 + 1 即 叶子结点数等于度为2的结点数 + 1

总结点树 n = n0 + n1 + n2,且n0 = n2 + 1 ,推出 n = 2n0 + n1 - 1
由于完全二叉树n1 要么为0,要么为1

当n1= 1时, n = 2n0,n 必为偶数
此时,叶子结点数n0 = n / 2,非叶子结点数 n1 + n2 = n / 2
当n = 0时,n = 2n0 - 1, n 必为奇数
此时叶子结点数 n0 = (n + 1) / 2

在计算机语言中,除法一般默认为向下取整
所以 n0 = floor((n + 1) / 2)
结果为 (768 + 1) / 2 = 384.5 = 384个叶子结点

n = 1, n0 = 1
n = 2, n0 = 1
n = 3 , n0 = 2
n = 4, n0 = 2
.......

相关文章

  • 958. 二叉树的完全性检验

    判断是否是完全二叉树 给定一个二叉树,确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下: 若设二叉树...

  • 数据结构与算法-二叉树02

    二叉树的定义 二叉树的特点 二叉树的五中基本形态 其他二叉树 斜二叉树 满二叉树 完全二叉树图片.png满二叉树一...

  • 二叉树

    二叉树 高度 深度真二叉树 满二叉树 完全二叉树 二叉树遍历前序 中序 后序层序遍历 翻转二叉树 递归法...

  • 剑指 Offer II 043. 往完全二叉树添加节点

    定义:完全二叉树定义完全二叉树(Complete Binary Tree)若设二叉树的深度为h,除第 h 层外,其...

  • 认识二叉堆

    什么是二叉堆? 二叉堆本质上是一种完全二叉树( 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引...

  • 二叉(搜索)树转换/完全二叉树验证解析

    1.二叉树完全性检验(958-中) 题目描述:给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的...

  • 树与二叉树

    **树 ** 二叉树 满二叉树 完全二叉树 三种遍历方法 树与二叉树的区别 二叉查找树 平衡二叉树 红黑二叉树

  • 完全二叉树实现优先队列与堆排序

    本文的目标是要做出优先队列和堆排序两个Demo。 完全二叉树 优先队列 堆排序 完全二叉树 完全二叉树的定义是建立...

  • 完全二叉树的节点个数

    给出一个完全二叉树,求出该树的节点个数。 说明: [完全二叉树]定义如下:在完全二叉树中,除了最底层节点可能没填满...

  • 222. Count Complete Tree Nodes

    完全二叉树的节点的个数。 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下...

网友评论

      本文标题:二叉树-完全二叉树

      本文链接:https://www.haomeiwen.com/subject/ztjgbktx.html