**C语言版本
- 树
树:n(n≥0)个结点的有限集合。
结点的度:结点拥有的子树数量
终端结点/叶子:度为0的结点
树的深度/高度:树中结点的最大层次
有序树:将树中结点的各个子树看成从左到右是有次序的(不能互换),否则为无序树。
- 二叉树
二叉树:每个结点之多只有两颗子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,次序不能任意颠倒。
满二叉树:一颗深度为k且有2^k -1个结点的二叉树
完全二叉树:深度为k,有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中从1至n的结点一一对应时
- 完全二叉树的性质
叶子结点只可能在层次最大的两层出现。
对任一结点,若其右分支的深度为d,则其左分支最大层次必为d或d+1。
- 二叉树的存储结构
顺序存储结构:用一组连续地址依次自上而下、自左向右存储完全二叉树中的结点元素,即将完全二叉树上编号为i的结点存储在数组下表为i-1的位置。
这种存储结构只适用于完全二叉树。
链式存储结构:设计不同的结点结构可以构成不同形式的链式存储结构,表示二叉树的链表中至少包含3个域:数据域、左指针域、右指针域。
二叉链表:数据域、左指针域、右指针域
三叉链表:数据域、左指针域、右指针域、指向parent的指针域
- 遍历二叉树
**待续。。。