【啊哈!算法】算法10:二叉树
来源:互联网 发布:问道登陆器源码 编辑:程序博客网 时间:2024/06/04 23:23
二叉树是一种特殊的树。二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树。更加严格的递归定义是:二叉树要么为空,要么由根结点、左子树和右子树组成,而左子树和右子树分别是一棵二叉树。 下面这棵树就是一棵二叉树。
二叉树的使用范围最广,一棵多叉树也可以转化为二叉树,因此我们将着重讲解二叉树。
二叉树中还有连两种特殊的二叉树叫做满二叉树和完全二叉树。如果二叉树中每个内部结点都有两个儿子,这样的二叉树叫做满二叉树。或者说满二叉树所有的叶结点都有同样的深度。比如下面这棵二叉树,是不是感觉很“丰满”。满二叉树的严格的定义是一棵深度为h且有2h-1个结点的二叉树。
如果一棵二叉树除了最右边位置上一个或者几个叶结点缺少外其它是丰满的,那么这样的二叉树就是完全二叉树。严格的定义是:若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点,就是完全二叉树。也就是说如果一个结点有右子结点,那么它一定也有左子结点。例如下面这三棵树都是完全二叉树。其实你可以将满二叉树理解成是一种特殊的或者极其完美的完全二叉树。
其实完全二叉树类似下面这个形状。
说到这里我们马上就要领略到完全二叉树的魅力了。先想一想一棵完全二叉树如何存储呢?其实完全二叉树中父亲和儿子之间有着神奇的规律,我们只需用一个一维数组就可以存储完全二叉树。首先将完全二叉树进行从上到下,从左到右编号。
欢迎转载,码字不容易啊,转载麻烦注明出处
《啊哈!算法》算法10:二叉树 http://www.ahalei.com/thread-4850-1-1.html
阅读全文
0 0
- 【啊哈!算法】算法10:二叉树
- 【啊哈!算法】算法10:二叉树
- 《啊哈!算法》
- 《啊哈!算法》
- 啊哈!算法
- 啊哈!算法-------算法类书籍
- 《啊哈算法》第七章 神奇的树
- 最小生成树 《啊哈算法》读书笔记
- 二. 啊哈,算法!
- 第二章 啊哈!算法
- 编程珠玑 ~~ 啊哈! 算法
- (2)啊哈!算法
- 啊哈算法-----快速排序
- 啊哈算法 之 队列
- 啊哈,算法! -----dfs1
- 啊哈,算法!-----dfs2
- 啊哈,算法!-----dfs3
- 啊哈磊的算法
- matlab 图像显示 命令 image imshow
- ideal常用设置
- [LeetCode] Find Median from Data Stream
- Android——自定义ViewPager指示器
- HTML5学习笔记
- 【啊哈!算法】算法10:二叉树
- displayposition 和 float 的相互关系
- 欢迎使用CSDN-markdown编辑器
- scala 枚举类
- Spring Boot大纲
- 欢迎使用CSDN-markdown编辑器
- 一道值得分享(interesting)的题目
- 【啊哈!算法】算法11:堆——神奇的优先队列(上)
- linux下Mysql安装