六、树和二叉树--(1)什么是二叉树
2016-05-02 22:03
309 查看
摘自计蒜客:http://www.jisuanke.com/course/35/1389
如上图所示,二叉树的每个结点最多只有两个孩子结点,也就是说每个结点最多有两个子树。
二叉树有
5 种基本形态:
空二叉树,树为空,没有结点;
只有根结点的二叉树;
只有左子树的二叉树;
只有右子树的二叉树;
左右子树都有的二叉树。
接下来我们来看看二叉树的性质:
二叉树的第 i 层最多有 2i - 1 个结点。由定义可知,二叉树的每个结点最多有两个孩子结点,那么第 i 层最多的结点数等于第 i - 1 层最多结点数的 2 倍。而第 1 层最多只有 1 个结点,所以我们可以知道第 i 层最多有 2i
- 1 个结点。
深度为 k 的二叉树最多有 2k - 1 个结点。由上一个性质,我们可以知道二叉树每层最多的结点个数,从第 1 层到第 k 层把最多结点数累加起来,我们就可以得到深度为 k 的二叉树最多有 2k -
1 个结点。
任意一棵二叉树上,其叶子结点个数 n0 比度为 2 的结点数 n2 多
1。度为 2 的结点指的是即有左孩子又有右孩子的结点。我们记树上结点总个数为 n,度为 1 的结点个数为 n1,则有 n = n0 +
n1 + n2。另外我们可以发现一棵二叉树一共有 n - 1 条边,度为
2 的结点可以延伸出 2 条边,度为 1 的结点可以延伸出 1 条边,叶子结点没有边延伸出来,所以又有 n - 1 = n1 + 2 * n2。结合以上两个式子,我们可以得到
n0 = n2 + 1。
下面我们来了解下两个特殊的二叉树吧。
第一个是满二叉树,如果一棵树深度为
k 而且有 2k -
1 个结点,那么我们称该二叉树为满二叉树,也就是说在此深度上,不能再添加结点了;
第二个是完全二叉树,如果一棵树深度为
k,从第 1 层到第 k - 1 层该树是满二叉树,第 k 层的结点都集中在左边,那么我们称该二叉树为完全二叉树。完全二叉树因其结构的特殊性具有很高的效率,它经常被用在算法的优化里。
如上图所示,二叉树的每个结点最多只有两个孩子结点,也就是说每个结点最多有两个子树。
二叉树有
5 种基本形态:
空二叉树,树为空,没有结点;
只有根结点的二叉树;
只有左子树的二叉树;
只有右子树的二叉树;
左右子树都有的二叉树。
接下来我们来看看二叉树的性质:
二叉树的第 i 层最多有 2i - 1 个结点。由定义可知,二叉树的每个结点最多有两个孩子结点,那么第 i 层最多的结点数等于第 i - 1 层最多结点数的 2 倍。而第 1 层最多只有 1 个结点,所以我们可以知道第 i 层最多有 2i
- 1 个结点。
深度为 k 的二叉树最多有 2k - 1 个结点。由上一个性质,我们可以知道二叉树每层最多的结点个数,从第 1 层到第 k 层把最多结点数累加起来,我们就可以得到深度为 k 的二叉树最多有 2k -
1 个结点。
任意一棵二叉树上,其叶子结点个数 n0 比度为 2 的结点数 n2 多
1。度为 2 的结点指的是即有左孩子又有右孩子的结点。我们记树上结点总个数为 n,度为 1 的结点个数为 n1,则有 n = n0 +
n1 + n2。另外我们可以发现一棵二叉树一共有 n - 1 条边,度为
2 的结点可以延伸出 2 条边,度为 1 的结点可以延伸出 1 条边,叶子结点没有边延伸出来,所以又有 n - 1 = n1 + 2 * n2。结合以上两个式子,我们可以得到
n0 = n2 + 1。
下面我们来了解下两个特殊的二叉树吧。
第一个是满二叉树,如果一棵树深度为
k 而且有 2k -
1 个结点,那么我们称该二叉树为满二叉树,也就是说在此深度上,不能再添加结点了;
第二个是完全二叉树,如果一棵树深度为
k,从第 1 层到第 k - 1 层该树是满二叉树,第 k 层的结点都集中在左边,那么我们称该二叉树为完全二叉树。完全二叉树因其结构的特殊性具有很高的效率,它经常被用在算法的优化里。
相关文章推荐
- 第一次盲打,感觉好难啊,~~~~(>_<)~~~~
- linux下解压命令大全
- ./configure,make,make install的作用
- 剑指offer:孩子们的游戏(圆圈中最后剩下的数)
- 计算机科学只存在两个难题:缓存失效和命名
- 20145110 《Java程序设计》第四次实验报告
- Java中获取路径的方法_自我分析
- POJ 1751 Highways
- 【Unity】11.5 物理材质 (Physics Material)
- Immutable 在 JavaScript 中的应用
- Mybatis获取插入记录的自增长ID
- 解决Android Studio倒入项目或者打开项目卡死
- 在Linux中安装dnw
- 【Unity】11.4 车轮碰撞体(Wheel Collider)
- 【iCore3双核心板】iCore3双核心板使用说明(图文)
- BZoj 1016: [JSOI2008]最小生成树计数【最小生成树】
- 深入 Docker:容器和镜像
- 面向接口可扩展框架
- Hadoop HDFS概念学习系列之fs中相关API接口的说明(二十一)
- 个人工作总结11