树
树的相关概念
-
树结构的特点:
- 每个结点有零个或多个子结点;
- 没有父结点的结点称为根结点;
- 每一个非根结点有且只有一个父结点;
- 除了根结点外,每个子结点可以分为多个不相交的子树
-
节点的度:该节点所拥有的子树个数
-
树的度:树中度最大节点的度就是该树的度
-
叶子(终端)节点:度为0的节点
-
双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点
-
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节点
-
节点的层次:从根开始定义,根为第一层,根的子节点为第二层,以此类推 也有种说法根节点为第0层,所以没有特殊说明的话,默认根节点是第一层
-
树的高度/深度:节点的最大层次
-
非终端节点/分支节点:度不为0的节点
-
兄弟节点:有相同双亲,比如B,C就是兄弟节点
-
堂兄弟节点:双亲在同一层的节点,H和I就是堂兄弟节点
-
森林:m棵互不相交的树
树的表示形式
-
孩子表示法
节点中既要保存值域,也要保存孩子节点的地址
优点:找某个节点的孩子节点方便
缺点:找双亲节点不方便 -
双亲表示法
节点中既要保存值域,还要保存双亲的地址
优点:找节点的双亲比较方便
缺点:找节点的孩子不方便 -
孩子双亲表示法
孩子表示和双亲表示结合起来,节点中既保存值域,也要保存节点的孩子以及双亲的地址 -
孩子兄弟表示法(常用)
要保存第一个孩子节点,和当前节点的下一个兄弟节点
二叉树!!很重要哦
二叉树的相关概念
-
二叉树的特点:
- 二叉树是一棵有序树,左右子树的次序不能颠倒
- 二叉树中一定不会存在度大于2的节点
-
满二叉树:二叉树中每层节点个数达到最大值
第i层 2^(i-1)个节点
如果一个满二叉树共n层,则共 2^-1个节点 -
完全二叉树
如果一颗具有n个节点的二叉树与满二叉树前n个节点的连接形式一样(好好理解这句话),将该二叉树称为完全二叉树
==》- 满二叉树是一颗特殊的完全二叉树,但完全二叉树不一定是满二叉树
- 完全二叉树中一定不会存在某节点只有右孩子没有左孩子的情况
二叉树的性质
-
在二叉树的第i(i>=1)层最多有2^(i - 1)个结点。
-
深度为k(k>=0)的二叉树最少有k个结点,最多有2^k-1个结点。
-
对于任一棵非空二叉树,若其叶结点数为n0,度为2的非叶结点数为n2,则n0 = n2 +1。
-
对于具有n个节点的完全二叉树,如果按照从上到下从左至右的顺序对所有节点从0开始编号,则对于需要为i的节点有:
- 若i > 0,双亲序号:(i -1)/ 2 ;i = 0,i为根节点编号,无双亲节点
- 若2i + 1 < n,左孩子序号:2i + 1,否则无左孩子
- 若2i + 2 < n,右孩子序号:2i + 2,否则无左孩子
-
如果完全二叉树中的节点个数是偶数个,一定有一个节点只有左孩子
-
如果完全二叉树中的节点个数是奇数个,一定没有只有左孩子的节点
-
【例题】假设一颗完全二叉树中总共有1000个节点,则该二叉树中_500___个叶子节点,__500__个非叶子节点,__1__个节点只有左孩子,__0__个节点只有右孩子