二叉树
- 二叉树的特点:
- 每个节点最多有两个子节点
- 左树和右树是有顺序的,不能偏差
- 即使这个节点只有一个子树,也要分辨是左树还是右树
- 五种基本形态: 空二叉树,只有一个根结点,根结点只有左树,根节点只有右树,根节点左右树都有
- 特殊的二叉树
- 斜二叉树:都只有左树或者都只有右树
- 满二叉树:所有分支结点都有左右子树,且叶子节点都在同一层
- 完全二叉树:可以理解为带缺点的满二叉树,任何一个完全二叉树的节点和满二叉树节点对比,编号都是一样的
- 二叉树性质
- 在二叉树的第i层上最多有2^i-1个节点
- 深度为k的二叉树至多有(2^k)-1个结点
- 对任何一颗二叉树T,终端结点数为N1,度为2的节点数为N2,N1=N2-1
- 具有n个结点的完全二叉树的深度为[log2n]+1
- 如果一个n个结点的完全二叉树的结点按照层序编号,对任意一个结点i
- 如果i=1,这个结点就是根节点,如果i>1,他的双亲结点就是i/2
- 如果2i>n,结点i无左结点,否则他的左孩结点是2i
- 如果2i+1>n,则结点i无右孩结点,否则他的右孩结点2i+1
- 二叉树遍历法
- 前序遍历:先遍历左子树,在遍历右子树
- 中序遍历:中序遍历根节点的左子树,在访问根节点,最后中序遍历右子树
- 后序遍历:从左到右先遍历叶子后结点,最后访问根节点
- 层序遍历:从根节点开始,遍历每一层,从左到右,从上到下