二叉树
This is my study note of Binary tree.
二叉树
什么是二叉树
- 本身是有序树
- 树中包含的各个节点的度不能超过2个,只能为0、1、2

二叉树的性质
- 二叉树中,第i层最多有2^(i-1)个结点
- 如果二叉树深度为k,那么此二叉树总共有2^k-1个结点
- 二叉树中,终端结点数为n0,度为2的结点数为n2,n0 = n2+1
二叉树的分类
- 满二叉树 - 1 - 除了叶子结点,每个结点的度都为2,所以是满二叉树。  
- 完全二叉树 - 1 - 二叉树除了最后一层为满二叉树,且最后一层的结点依次从左到右分布,则二叉树被称为完全二叉树。  
 如右图,由于最后一层的节点没有按照从左到右分布,因此算作普通二叉树。
二叉树的遍历
- 先序遍历举个简单的例子:1 
 2
 3
 4访问顺序为: 
 1.访问根节点
 2.访问左节点
 3.若当前左节点没有左子树,则访问右节点 
采用先序遍历的流程:
| 1 | 1.访问二叉树根节点,找到1 | 
- 中序遍历举个简单的例子:1 
 2
 3
 4访问顺序为: 
 1.访问左节点
 2.访问根节点
 3.访问右节点 
采用中序遍历的流程:
| 1 | 1.访问根节点的左子节点2 | 
- 后序遍历举个简单的例子:1 
 2
 3
 4访问顺序为: 
 1.访问左节点
 2.访问右节点
 3.访问根节点 
采用后序遍历的流程:
| 1 | 1.访问根节点的左子节点2 | 
层次遍历(广度优先遍历)的实现过程
各方向上走出第一步,再在各方面上走出第二布,第三步,直到各个方向全部走完。
- 首先根节点1入队
- 根节点1出队,出队的过程,左孩子2和右孩子3入队
- 左孩子2出队,出队的过程,左孩子4和右孩子5入队
- 根节点3出队,出队的过程,左孩子6和右孩子7入队
- 不断循环,直到队列内为空
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 风声向寂!
 评论
ValineDisqus



