树的学习与应用
树的概念
树是n(n>=0)个结点的有限集合,n = 0 时称为空树,这是一种特殊情况,在任意一棵非空树中应满足:
- 有且仅有一个特定的称为根的节点
- 当 n > 1 时,其余节点可分为m (m > 0)个互不相交的集合T1,T2,T3……Tm,其中每个集合本身又是一棵树,并且称为根结点的子树
属性:
结点的层次(深度)-----从上往下数
结点的高度--------------从下往上数
树的高度(深度)-------总共多少层
结点的度----------------有几个孩子(分支)
树的度------------------各结点的度的最大值
有序树—逻辑上看,树中结点的各子树从左至右是有次序的,不能互换
无序树—逻辑上看,树中结点的各子树从左至右是无次序的,能互换
森林:森林是m(m > = 0)棵互不相交的树的集合
树的节点数 = 总度数+ 1
度为m的数 第i层至多有m^(i - 1)个结点(i > = 1)
高度为h 的m叉数至多有 (m^h - 1)/(m - 1)个结点,至少有h个结点
二叉树的基本概念:
二叉树是n( n > = 0)个结点的有限集合:
- 或者为空二叉树,即 n = 0
- 或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成,左子树和右子树又分别是一棵二叉树
- 特点:每个结点至多有两棵子树、左右子树不能颠倒(二叉树是有序树)
满二叉树:一棵高度为h,且含有2^h - 1个结点的二叉树
特点:
- 只有最后一层有叶子结点
- 不存在度为1的节点
- 按层序从1开始编号,结点i的左孩子是2i,右孩子为2i + 1;结点i的父节点为【i / 2】(如果有的话)
完全二叉树:当且仅当其每个结点都与高度为h的满二叉树中编号为1~n的结点意义对应时,称为完全二叉树
完全二叉树的特点:
- 只有最后两层可能有叶子结点
- 最多只有一个度为1的结点
- 按层序从1开始编号,结点i的左孩子是2i,右孩子为2i + 1;结点i的父节点为【i / 2】(如果有的话)
二叉排序树
一棵二叉树或者空二叉树,或者是具有如下性质的二叉树:
- 左子树上所有结点的关键字均小于根结点的关键字
- 右子树上所有结点的关键字均大于根结点的关键字
- 左子树和右子树有又各是一棵二叉排序树
平衡二叉树
树上任一结点的左子树和右子树的深度之差不超过1
二叉树常考性质:
常见考点1:
设非空二叉树中度为0、1、2的节点个数分别为n0,n1,n2,则n0 = n2 + 1(叶子结点比二分支节点多一个)
推导公式:(假设树中结点总数为n)
n = n0 + n1 + n2
n = n1 + 2*n2 + 1(树的结点数= 总度数+ 1)
从而得出n0 = n2 + 1