树是经常用到的数据结构,用来模拟具有树状结构性质的数据集合。
从图的观点来看,树可视为拥有N个节点N-1条边的一个有向无环图
**二叉树**(Binary Tree)是一种更为典型的树状结构,二叉树是每个节点最多有两个子树的树结构,通常子树被称为左子树右子树
对于二叉树,需要掌握常见的排序、遍历算法。

二叉树遍历:

  • 前序遍历
  • 中序遍历
  • 后序遍历
  • 层序遍历

斜树

左斜树
二叉树 - 图1

右斜树
二叉树 - 图2

满二叉树

**Full Binary Tree**
如果一个二叉树的层数为**K**,且结点总数是**2****k**** -1** ,则它就是满二叉树。
满二叉树特点(高度 h):

  • 叶子节点都在最后一层
  • 只有度为0、度为2的节点
  • 叶子数是:**2****h**** ** 
  • 第 k 层的结点数是: **n = 2****(k - 1)**
  • 总结点数:**n = 2****k**** - 1**(反过来,高度 **h = log****2****(n+1)**)



二叉树 - 图3

完全二叉树

**Complete Binary Tree**
完全二叉树的节点数是任意的,从形式上讲它是个缺失的的三角形,但所缺失的部分一定是右下角某个连续的部 分,最后那一行可能不是完整的
对于k层的完全二叉树,节点数的范围2^ (k - 1) -1 < N< 2^k - 1;设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边, 这就是完全二叉树。
个人所想:层序遍历上满足节点连续性。
完全二叉树特点(高度 h,共n个节点):

  • 高度 **h = log****2****(n+1)**

二叉树 - 图4