树的一些概念
二叉树(二分树)
它的特点是每个结点最多只有二棵子树,二叉树的子树有左右之分。
任意一颗二叉树中,度为0的结点与度为2的结点满足以下关系: n0=n2+1
证明如下:
n个结点的二叉树,度只可能是0,1,2,分别设其对应的结点个数为n0、n1、n2,则有n=n0+n1+n2;
又n结点的树只有n-1条边,则有n-1=n1+2*n2;
两式相减,可得等式n0=n2+1。
完全二叉树
- 叶子结点出现在最大两层
- 左子树深度与右子树深度相同或相差一层
- 若树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数(2n-1个节点)
- 完全二叉树中度为1的节点个数为0或1
由该结论可推导:
n0=n2+1;n=n0+n1+n2;
由以上 两个公式消去n2得到:
n1=0时,n0=(n+1)/2 或 n1=1时,n0=n/2
(可以用该结论判断完全二叉树中度为1的节点)
满二叉树
- 在满二叉树中,只有度为2和0的结点
- 在第h层,有2h-1个结点
- 深度为h的满二叉树,有2h-1个结点
如果一个树是一颗满二叉树,那么它一定是一颗完全二叉树;反之不成立
节点数计算
-
深度为6的完全二叉树的第6层有3个节点,则该二叉树共有___个叶子节点。
第六层有3个叶子节点,则第五层的节点中,有2个是非叶子节点
第五层所有节点个数为25-1=16
所以该二叉树叶子节点数为:16-2+3=17 个 -
一颗完全按二叉树共有699个节点,则该二叉树叶子节点数为___;度为1的节点数为___
由结论4可得,当n1=0时,n0=(699+1)/2 =350;则度为1的节点数为0;
二叉树的前、中、后序遍历
前中后序是指对根节点的前中后,例如前序遍历的顺序为,先遍历根节点,然后遍历左子树,最后遍历右子树。
- 已知二叉树的后续遍历为dabec,中序遍历为debac,那么它的前序遍历为__cedba__;