最近在复习数据结构和线性代数,先准备周六的线代考试,好好复习。
目录
树的概念
结点:
空树:
子树:
结点的度:
树的度:
层数:
结点的深度:
结点的高度:
树的深度:
树的高度:
森林:
特殊类型的二叉树
二叉树的概念
二叉树的特点
二叉树的性质
二叉树的遍历
真二叉树
满二叉树
性质:
完全二叉树
性质:
树的概念
结点:
根结点、父结点、子结点、兄弟结点
空树:
一棵树可以没有任何结点。
子树:
左子树、右子树
结点的度:
这个结点的子树的个数。
树的度:
所有结点的度中最大的值。
层数:
根结点在第一层,根结点的子结点属于第二层……
其余结点的层次等于其父亲结点的层次+1
结点的深度:
从根结点到当前结点的唯一路径上的结点总数。
结点的高度:
从当前节点到最远叶子结点的路径上的结点总数。
树的深度:
所有结点深度中的最大值。
树的高度:
多有结点高度中的最大值。
森林:
有m颗(m>=0)互不相交的数组成的集合
特殊类型的二叉树
二叉查找树:
对于树中的每个结点X,它的左子树中所有项的值小于X,而它的右子树的中所有项的值大于X,这意味着该数所有的元素可以用某种一致的方式排序。
AVL树:
生成二叉树或者二叉查找树的时候,很容易失衡,造成的最坏的情况是只有左子树或者右子树,这样会导致树的检索效率会降低很多。
而AVL树是一种带有平衡条件的二叉查找树,保证树的深度必须是O(logN)
满足AVL树的条件是:每个结点的所子树和右子树深度最多差1,或者是空树
红黑树:
结点是红色或者黑色的平衡二叉树,通过颜色的约束来维持二叉树的平衡
性质:从根到叶子的最长的可能路径不多于最短的可能路径的两倍
满足红黑树的条件是:
- 每个结点都只能是红色或者黑色
- 根结点是黑色,每片叶子都是黑色的
- 如果一个结点是红色的,则它的两个子结点是黑色的,在一条路径上不能出现相邻的两个红色结点
- 从任意一个节点到其每个叶子的所有路径都包含着相同数目的黑色结点
二叉树的概念
以树干的分值数量为准,将树分为二叉树与多叉树,二叉树是n个有限元素的集合,这个集合可以为空——空树。
二叉树是指树中结点的度不大于2的有序树,是一种最简单最重要的树。
二叉树的特点
- 每个结点的度最大是2
- 左子树和右子树是有顺序的
- 即使一个结点只有一颗子树,也要区分左右子树
二叉树的性质
- 二叉树的第i层上最多有(i≥1)个节点
- 深度为h的二叉树中至多含有个节点
- 若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1
- 具有n个节点的满二叉树深为log2n+1
- 若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),那么,对于编号为i(i≥1)的节点存在:
- 当i=1时,该节点为根,它无双亲节点
- 当i>1时,该节点的双亲节点的编号为i/2
- 若2i≤n,则有编号为2i的左节点,否则没有左节点
- 若2i+1≤n,则有编号为2i+1的右节点,否则没有右节点
二叉树的遍历
按照某种遍历方式对二叉树进行遍历。可以把二叉树中所有结点排列为一个线性序列,在该序列中,除第一个结点外,每个结点都只有一个直接前驱结点,出最后一个结点外,每个结点都有一个后继结点。
真二叉树
所有结点的度要么是0,要么是2
满二叉树
最后一层结点的度都为0,其他的结点的度都为2
性质:
对于一颗满二叉树,它的高是h(h>=1)
- 第i层的结点数:
- 叶子结点数:
- 总结点数n,则n=-1=++++……+
- h=+1
同样高度的二叉树中,满二叉树的叶子结点数量最多,总结点数最多
完全二叉树
叶子结点只会出现在最后两层,且最后一层的叶子结点都靠左对齐。
满二叉树对结点从上至下,从左往右开始编号,它的编号与相同高度的慢二叉树中的编号对应。
性质:
度为1的结点只有左子树,度为1的结点要么是1个,要么是0个
同样结点数量的二叉树,完全二叉树的高度最小(从上往下,从左往右排布)
假设完全二叉树的高度为h(h>=1),则满足:
- 至少有个结点,++++……+个结点
- 最多有个结点(满二叉树),++++……+
假设结点总数为n,则满足:
- <=
- h-1<=<h